ORA-01704错误的原因 ORA-01704错误表示“字符串文字太长”。在Oracle数据库中,当尝试插入或更新一个列时,如果提供的字符串超出了该列的数据类型限制(例如VARCHAR2、CLOB等),就会触发此错误。对于CLOB类型,虽然理论上可以存储非常大的文本数据,但在某些情况下(如直接在SQL语句中作为字符串文字提供时),仍然可能受到Or...
BEGIN clobValue := 'XXX'; --字段内容 UPDATE 表名 T SET T.字段名 = clobValue WHERE 条件; COMMIT; END; / 参考网址:Oracle插入/更新CLOB字段报ORA-01704:字符串文字太长【解决方案】
第一种方式:使用文件存储数据 当数据量特别大达到几M甚至几十M的时候,虽然CLOB也能存下但不建议直接存ORACLE,最好的方式将数据存自盘上,在ORACLE中只留下数据文件的地址信息这样我们在插入与查询上性能会快很多,对网络的开销也小。当我们需要读取数据时再从文件中读取数据。相对于前者直接获取存储在内存中,这种方...
代码语言:javascript 复制 DECLARE v_clobValue CLOB:= 'XXX'; --字段内容,但是单引号中的内容不能超过4000字符BEGIN UPDATE 表名T SET T.字段名 = T.字段名|| v_clobValue WHERE 条件; COMMIT; END; / & 说明: 有关ORA-01704错误的更多内容可以参考我的BLOG:http://blog.itpub.net/26736162/viewspac...
问题复现 1.批量执行数据脚本时出现 解决方案 由于我所使用的是大量insert的方式,并且内容都含有html标签,所以采用拼接的形式,即: || to_clob('内容')...
【解决方案】Oracle插入/更新CLOB字段报ORA-01704:字符串文字太长 解决办法: 1、如果插入的SQL比较少,那么可以人工处理。方法是使用PLSQL Developer软件,命令为:select * from 表名 for update。这样把相关的字段内容直接复制到CLOB字段中,最后提交即可。
ORA-01704:文本字符串太长。隐式转换,oracle默认把字符串转换成varchar2类型,而这个字符串的长度,又比4000大,ORA-01704错误。两个单引号之间的字符不能超过4000。 解决办法:采取绑定变量的方式依次拼装更新。 DECLAREV_LANGCLOB:='XXX';--内容就可以超过4000个字符了BEGINUPDATE表名 TSETT.字段名=V_LANGWHERE条件...
原因分析:sql在执行之前会把所有字符类型的数据转换成VARCHAR2类型,而VARCHAR2类型的最大长度为4000,所以当字符串超过这个长度就会转换失败。 方法1: 代码语言:javascript 复制 declare v_clob clob;beginv_clob:='很长的文字';insert into tablenamevalues(a,110,v_clob);end; ...
在执行SQL的时候报了[ORA-01704:字符串文件太长]的错误,如下图所示: 以上SQL语法没有任何问题,但是如果CLOB字段的内容非常大的时候,会导致SQL语句过长,我认可网上的这个说法:隐式转换,oracle默认把字符串转换成varchar2类型,而这个字符串的长度,又比4000大,所以会报ora-01704错误。说得通俗一点,就是两个单引号...
最近有位朋友问我:开发中向CLOB字段存储string时报了ORA-01704的错误不知道怎么解决。⾸先造成这个问题的原因相信⼤家都明⽩,就是因为插⼊的字符串过长导致,因为oracle在插⼊CLOB的数据默认会以varchar2的类型插⼊,所以当超过4000个字符时就会报ORA-01704的错误了(varchar2类型的字符长度是4000,注意...