美文网首页
oracle 导出超长Clob字段insert语句执行报字段过长

oracle 导出超长Clob字段insert语句执行报字段过长

作者: 蒹葭残辉 | 来源:发表于2020-06-29 19:22 被阅读0次

    对于长度小于4000的字符串直接执行insert语句正常,但对于超过4000的就不能直接执行了,会报字符串长度过长的错。

    通过一阵百度,我认可网上的这个说法:隐式转换,oracle默认把字符串转换成varchar2类型,而这个字符串的长度,又比4000大,所以会报ora-01704错误。说得通俗一点,就是两个单引号之间的字符不能超过4000。

    解决方案,对于过长的sql定义一个Clob变量,然后在sql中直接引用这个变量即可:

    DECLARE
      EXPSTR CLOB:='你的超长字符串';
    BEGIN
      INSERT INTO "MMS_EXECUTION_RULE" VALUES ('1001', '1001', '跟随模板', 'strategy', 'template', 'normal', '1',EXPSTR , 'system', '1', '0', TO_DATE('2020-06-02 11:36:36', 'YYYY-MM-DD HH24:MI:SS'), null, null, null, null, null, null, 'groovy');
    END;
    /
    

    注意的是:如果只执行单条语句,最后的 "/" 符号 可以不加,如果后面还有DECLARE语句,"/"符号必须要加上。

    使用这种方式,亲测通过,祝好运!

    相关文章

      网友评论

          本文标题:oracle 导出超长Clob字段insert语句执行报字段过长

          本文链接:https://www.haomeiwen.com/subject/nqyafktx.html