我在 Oracle 数据库中有一个表,如下所示,
create table test_clob(
id1 number,
clob_col clob);
如果我尝试将大小超过 4000 的 varchar2 变量插入 CLOB 列,它会毫无问题地插入。
insert into test_clob values (1,rpad('a',32760,'a'));
commit;
如果我尝试如下更新 CLOB 列,它工作得很好。
update test_clob set clob_col = rpad('b',32760,'b') where id1 = 1;
commit;
但是,如果我尝试按如下方式运行更新语句,则会由于“ORA-01461:只能绑定 LONG 值以插入 LONG 列”错误而失败。
declare
large_string varchar2(32767) := rpad('c',32760,'c');
begin
update test_clob set clob_col = nvl(large_string,clob_col) where id1 = 1;
commit;
end;
我怀疑是 NVL 功能导致了问题。对此的任何帮助都将受到高度赞赏。
注意:我在示例中使用了一个简单的表,但实际上该表有几个列,并且更新语句必须一次更新许多列。