我有一个应用程序偶尔被传递数据导致它失败,ORA-12899错误试图将记录插入到Oracle 11g数据库的varchar(2000)列中。 )在某些情况下,它试图插入超过4000个字符的字段。)
从长远来看,我会请求更改应用程序以防止这种情况发生,但同时我需要一个短期修复程序来保存记录,将数据截断为2000个字符。
我已经尝试过“插入前”触发器(当它从1500到1000个字符截断时工作正常),但我发现的是数据超过2000个字符(即超过2000个字符)列长度)插入仍然失败,使用ORA-12899。
除了将数据库列更改为CLOB之外,还有什么办法吗?
答案 0 :(得分:-1)
在insert命令中包含类似于以下代码的case语句
insert into test_table
(column1)
values
(
(case when length('ablekkkkkkkkkkkh') > 2000 then substr('ablekkkkkkkkh',1,2000)
else 'ablekkkkkkkkkkkh' end )
);