暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

ORA-01704 字符串文字太长

oracle搬砖天使 2021-04-28
5161

背景: 

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进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论