Oracle ORA-01704: string literal too long问题分析

今天使用sql在Oracle直接insert update一个表时,出现ORA-01704: string literal too long的错误,我们的sql是

update mall_config  a set a.category_info='|标准

其中category_info字段是clob类型,而后面字符串内容很长,虽然clob可以足够可以保存这么长的字符串,但是sql语句的语法解析对字段却有长度限制,文字字符串过长!

有两种方法可以解决:

1.使用存储过程,把超长文本保存在一个变量中,然后再insert update

  1. declare  
  2. v_clob clob :='一个长文本';  
  3. begin  
  4.   insert into table values(a,3,:clob);  
  5.  end;  

2.字符串拼接,update使用字符串拼接

  1. update mall_config set category_info='安全防护:3003,' where id=1;  
  2. update mall_config set category_info=category_info||'|标准件:1040140,1035382,' where id=1;  

这都可以解决问题。

相关推荐