Oracle数据库CLOB字段提示ORA-01704:字符串文字太长的处理方法
1.方法一:插入的SQL比较少,那么可以人工处理。
针对可以使用PL/SQL工具连接的数据库:
1、打开PL/SQL工具,输入SQL语句,如下:
select * from 表名 for UPDATE;
2、把更新的小锁打开,找到CLOB字段,点击 ‘…’, 将内容复制进来,点击’确定’按钮,点击绿色对勾提交即可。
2.方法二:如果插入的SQL比较多,那么需要先把所有的SQL语句插入到表中,然后对SQL语句进行处理。
首先需要找规律,找到规律了,然后用PL/SQL块进行插入或更新即可。 对Oracle数据库插入或者更新CLOB字段的时候,直接拼接了一个INSERT INTO和UPDATE语句,类似下面这种: INSERT INTO 表名(字段1, 字段2, CLOB字段) VALUES (‘XX’, ‘XXX’, ‘内容非常多’); UPDATE 表名 T SET T.CLOB字段名 = ‘内容非常多’;
oracle默认把字符串转换成varchar2类型,而这个字符串的长度,又比4000大,所以会报ORA-01704错误。 说得通俗一点,就是两个单引号之间的字符不能超过4000。
解决办法:使用PL/SQL语法,采取绑定变量的方式解决,而不是直接拼接SQL
DECLARE
clobValue 表名.字段名%TYPE;
BEGIN
clobValue := 'XXX';
UPDATE 表名 T SET T.字段名 = clobValue WHERE 条件;
COMMIT;
END;
/
declare
v_clob1 clob:='一个长文本1';
v_clob2 clob:='一个长文本2';
begin
insert into 表名 values('1',v_clob1,v_clob2);
end;
/
–其他参考方法 https://blog.51cto.com/u_11310506/2431176
|