ORA-0146:仅能绑定要插入LONG列的LONG值
项目有个小需求,要把格式固定的excel文件入库,后续会有其他一些数据处理,于是用Java写了一个小程序准备用JDBC方式写入(Oracle)。
一般字段还好处理,当字段内容超过4K时得用CLOB字段存储。通过PreparStatment 设置CLOB字段值时,如果不特殊处理,就会报ORA-0146:仅能绑定要插入LONG列的LONG值错误,如果写入数据不大时,不会报此错误,具体处理方式是:PreparStatment.setObject时 CLOB字段一定要传CLOB类型对象。
Connection con
Clob clob=con.createClob();
clob.setString(1,str)
PreparStatment.setObject(1,clob);
con.createClob(); 此步报错可能是驱动版本不对,ojdbc14和ojdbc6对应Oracle 不同版本
另外:在导入过程中出现过 ORA-24816:在世界的LONG或LOB列之后提供了扩展的非LONG绑定数据 错误 也是由于值过大,用一般的VARCHAR2存不了导致,需用CLOB存储。