一.背景
最近开发一个彩信客户端,往oracle数据库表插入彩信做测试时报错了,语句出错了---oracle ORA-01704: string literal too long
语句如下:
insert into
Mms_Task_Info(TASK_ID,SUBJECT,MOBILES,SEND_MSG,SYS_TIME,
RESEND_TIMES,user_id,user_Organization)
values(sys_guid(),'彩信标题','13000000000','此处省略好多字',sysdate,0,'','');
commit;
二.原因
因为彩信内容含有图片,并且它是由base64转码生成的,所以特别长,虽然send_msg字段是clob类型(最大能存4GB!),但是sql语句的语法解析对字段却有长度限制.
三.解决办法
1.存储过程
CREATE OR REPLACE PROCEDURE p_insertmms_send
IS
v_clob clob :='此处省略好多字';
begin
insert into
Mms_Task_Info(TASK_ID,SUBJECT,MOBILES,SEND_MSG,SYS_TIME,
RESEND_TIMES,user_id,user_Organization)
values(sys_guid(),'彩信标题','13000000000',v_clob,sysdate,0,'','');
commit;
end;