oracle数据库当插入的字符串长度大于4000时,会报错长度过长。
百度的解决方法都是定义变量去解决,如:
这种方法确实能够解决一部分问题,为什么这么说呢?
因为当长度很长,达到3、4W的时候还是会报长度过长的错误。
所以这种方法需要改进
我们可以把字符串切割成多个变量,最后再拼接在一起,如:
DECLARE v_sql CLOB;
BEGIN
v_sql_1 := RPAD('*', 4000, '*') || RPAD('*', 4000, '*');
v_sql_2 := RPAD('*', 4000, '*') || RPAD('*', 4000, '*');
v_sql_3 := RPAD('*', 4000, '*') || RPAD('*', 4000, '*');
v_sql_4 := RPAD('*', 4000, '*') || RPAD('*', 4000, '*');
v_sql_5 := RPAD('*', 4000, '*') || RPAD('*', 4000, '*');
INSERT INTO TEST(STATUS, BODY) VALUES('complete', v_sql_1 || v_sql_2 ||v_sql_3 || v_sql_4 ||v_sql_5);
COMMIT;
END;