加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长百科 > 正文

Oracle 办理【ORA-01704:字符串笔墨太长】

发布时间:2021-03-22 12:46:19 所属栏目:站长百科 来源:网络整理
导读:最近碰着了一个这样的题目,在对Oracle数据库插入可能更新CLOB字段的时辰,直接拼接了一个INSERT INTO和UPDATE语句,相同下面这种: Sql代码?? INSERT INTO 表名(字段1,字段2,CLOB字段) VALUES ( ‘ XX ‘ , ‘ XXX ‘ , ‘ 内容很是多 ‘ ); UPDATE 表名 T

最近碰着了一个这样的题目,在对Oracle数据库插入可能更新CLOB字段的时辰,直接拼接了一个INSERT INTO和UPDATE语句,相同下面这种:

Sql代码??
INSERT INTO 表名(字段1,字段2,CLOB字段)  VALUES (‘XX‘,‘XXX‘,‘内容很是多‘);  
UPDATE 表名 T SET T.CLOB字段名 = ‘内容很是多‘;  

?

?在执行SQL的时辰报了[ORA-01704:字符串文件太长]的错误,如下图所示:

Oracle 办理【ORA-01704:字符串笔墨太长】

以上SQL语法没有任何题目,可是假如CLOB字段的内容很是大的时辰,会导致SQL语句过长,我承认网上的这个说法:隐式转换,oracle默认把字符串转换成varchar2范例,而这个字符串的长度,又比4000大,以是会报ora-01704错误。说得普通一点,就是两个单引号之间的字符不能高出4000。应该不是clob存不下,而是insert语句插入的时辰字符串存不下,你应该分多次插入。

碰着这个题目,可以行使PL/SQL语法,采纳绑定变量的方法办理,而不是直接拼接SQL,譬喻:

Sql代码??
DECLARE  
  clobValue 表名.字段名%TYPE;  
BEGIN  
  clobValue := ‘XXX‘; --字段内容  
  UPDATE 表名 T SET T.字段名 = clobValue WHERE 前提;  
  COMMIT;  
END;  
/  

注:END;末端加“/”的意思是执行这段PL/SQL代码,假如多个PL/SQL代码必要同时执行,末端必需加上该标记。

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读