背景:
create table a(c1 varchar(8),c2 clob);
需要插入一条记录进表,其中有一个字段是clob类型。
报错现象:
insert into a value('20190813','长度超过4000的字符串');
commit;
ORA-01704 字符串文字太长
报错原因:
字符串文字长度超过4000个字符.
insert ...values...可以分解成两步:
1)select
2)insert
实验发现在select时就会报同样的错:
select '20190813','长度超过4000的字符串' from dual;
问题出现在解析语句阶段
解析时,会将所有字段当成字符串处理,而oracle中对字符串的长度要求不可超过4000字。
解决办法:
使用最多4000个字符的字符串文字。较长的值只能使用绑定变量输入。
所以该例子的解决办法如下:
declare
v_c2 clob;
begin
v_c2 :='长度超过4000的字符串'';
insert into a value('20190813',v_c2);
commit;
end;
文章转载自oracle搬砖天使,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




