2021-04-15 Oracle使用存储过程来处理 sql 插入长文本 报错ORA_01704

问题描述 :

在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.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值