【发布时间】:2019-12-23 19:45:01
【问题描述】:
我使用 Oracle 12c。我的数据库中有下表。
CREATE TABLE TEST_T (COL VARCHAR2(4000 CHAR));
我需要在此表中插入多字节字符。字符为 3 字节字符。
我只能在表中插入 1333 个(最多 3999 个字节)字符。
我的期望是插入最多 1500 个多字节字符,但我得到 ORA - 01461。
我不想将数据类型更改为 CLOB 或 LONG。
有没有办法使用 VARCHAR2(4000 CHAR) 来实现这一点。
下面是代码,
SET SERVEROUTPUT ON
DECLARE
LV_VAR CHAR(1):='プ'; -- 3 byte character
LV_STR VARCHAR2(32000) := '';
BEGIN
FOR I IN 1..1500
LOOP
LV_STR := LV_STR||LV_VAR;
END LOOP;
--
INSERT INTO TEST_T VALUES (LV_STR);
END;
/
Error report -
ORA-01461: can bind a LONG value only for insert into a LONG column
ORA-06512: at line 11
01461. 00000 - "can bind a LONG value only for insert into a LONG column"
*Cause:
*Action:
【问题讨论】:
-
max_string_size设置为什么?您能否将其设置为extended而不是默认的standard?如果是这样,那将允许varchar2列 32k 长而不是 4000 字节。 -
@JustinCave 它仅设置为标准,但由于限制,我无法将其更改为扩展。
标签: oracle unicode oracle12c varchar2