解决oracle中插入大字段时,报ORA-01461错。

使用架构:

spring - boot mybatis oracle

产生错误原因:

由于不同Oracle版本的客户端驱动版本对中文解析的长度不一致;并且对入参的长度也有限制。

解决方法:

使用DECLARE声明属于大字段类型的field,然后再SQL中引用就可以。

例子:

DECLARE PAGECONTENT BDACSI_META_PAGEMODULE.PAGECONTENT %TYPE; CPTSIZE BDACSI_META_PAGEMODULE.CPTSIZE %TYPE; CPTPOSITION BDACSI_META_PAGEMODULE.CPTPOSITION %TYPE; CPTMODEL BDACSI_META_PAGEMODULE.CPTMODEL %TYPE; PAGETABLE BDACSI_META_PAGEMODULE.PAGETABLE %TYPE; USERCONTENT BDACSI_META_PAGEMODULE.USERCONTENT %TYPE; BEGIN PAGECONTENT:=#{cp.pageContent}; CPTSIZE:=#{cp.cptSize}; CPTPOSITION:=#{cp.cptPosition}; CPTMODEL:=#{cp.cptModel}; PAGETABLE:=#{cp.pageTable}; USERCONTENT:=#{cp.userContent}; INSERT INTO BDACSI_META_PAGEMODULE T1

(T1.ID, T1.PAGEID, T1.PAGECONTENT, T1.CPTSIZE, T1.CPTPOSITION, T1.CPTMODEL, T1.PAGETABLE, T1.USERCONTENT) VALUES (#{cp.id},#{cp.pageId}, PAGECONTENT, CPTSIZE, CPTPOSITION, CPTMODEL, PAGETABLE, USERCONTENT); END;

经验分享 程序员 微信小程序 职场和发展