问题描述 :
在Oracle 中有的表字段需要存储的数据比较长,需要用clob等字段来存储,如果要插入的该字段很长的话,执行该sql 可能会报错, Oralce 会报错 ORA_01704,原文字符串太长 , 可以使用 存储过程来解决这个问题.
存储过程语法
DECLARE
STR CLOB;
BEGIN STR:=' 长文本 ;
INSERT INTO A(ID,TEXT) VALUES(SYS_GUID(),STR);
END;
上面sql语句 向 A表插入了一条记录,id字段取uuid,text字段 插入了长文本字符串, 首先定义了变量str 为clob类型,然后给str 赋值为 长文本字符串,最后执行插入操作,不要忘了 end;
注意不要漏了 给变量赋值的 :
,在sql 语句中 =
是判断相等, :=
是代表赋值.
如果是插入的字符串是html代码,需要注意的是
&
符号,html中可能会有
&
在数据库中表示系统变量,如果是 包含&
符号的字符串拼在sql中会发生改变,所以需要先提前转义一下, 使用js 或者java 语言 提前把&
符号全局替换成'|| chr(38)||'
,这样就相当于sql中有&
的地方,换成字符串拼接.在 mysql 中&
符号是要用char(38)
.
本文参考了https://www.cnblogs.com/zmztya/p/7793895.html.