oracle 10g 和 oracle 9i clob 的区别

最近,在做历史数据迁移项目时,用hibernate3.2 插入clob时,总会出现

ORA-01461: 仅可以为插入 LONG 列的 LONG 值赋值

 刚开始的时候以为是程序问题,首先从程序入手解决,然后根据错误提示信息,再从网上搜所相关资料,有的说是oracle驱动的bug,还有说是oracle dbManager设置问题,比如参数设置,约束等等,但这都不是问题的根本!后来,通过查看hibernate日志发现,在oracle10g 插入clob和oracle9i插入clob会出现不同的情况

 1.Oracle 10 g

Hibernate.createClob(/*直接插入超长字符*/)
正常插入,看来10g已经解决clob超大字符的限制

2.Oracle 9 i

 

Hibernate.createClob(/*直接插入超长字符*/)
不能正常插入,会出现ORA-01461: 仅可以为插入 LONG 列的 LONG 值赋值
发现当Hibernate.createClob("")的情况是正常插入
看来9i是需首先创建一个emptyClob,创建自身的游标,才能正常插入的

你可能感兴趣的:(oracle,Hibernate)