前两天在做excel上报数据时,批量插入数据库,遇到一个错误:报ORA-01704: 文字字符串太长
其中表中有个字段为clob类型,在Java中,clob类型可以用String类型去接收。Java代码检查了很多遍,觉得都没错。查看sql日志,拿到plsql中执行,还是会报同样的错,那就说明sql有问题。
没改之前的源码:
原因:sql在执行之前会把所有字符类型的数据转换成VARCHAR2类型,而VARCHAR2类型的最大长度为4000,所以当字符串超过这个长度就会转换失败。在sql文中,两个单引号中间的字节长度不可超过4000个字节,超过则会报错。4000个字节若是gbk格式的就是2000个汉字,业余的测试程序员一般不会测,所以要注意。
解决:定义一个函数,用函数语句去执行此sql文。
改过之后的源码