EXECUTE IMMEDIATE 使用可变列更新查询

EXECUTE IMMEDIATE Update query with variable column

我是第一次使用命令 EXECUTE IMMEDIATE,我想问问你是否可以帮助我。

我有一个可变列,因此我在互联网上搜索并找到了 EXECUTION IMMEDIATE 命令,但它给了我以下错误:

ORA-00904: "ACTUATION": invalid identifier
ORA-06512: at line 9

我真的很困惑,因为 ACTUATION 是 "old_val" 列而不是 "column_name" 列也许你可以帮助我。这是代码:

declare
cursor such is 
select column_name, old_val, CTN.ID from abc.firsttable
ctn, def.secondtable#CC ctncc
where CTN.bup#rev = CTNCC.bup#rev
and ID in (127605689)
and CTN.bup#changefrom > to_date ('08/06/2017', 'dd/MM/YYYY');
begin
for srec in such loop 
EXECUTE IMMEDIATE
'update firsttable ctn2
set ctn.' || srec.column_name || ' = '|| srec.old_val ||' 
where CTN2.ID = '|| srec.id;
end loop; 
end;

我想是的,你必须在字符串的参数之间添加更多 ':

显示这个,在你的代码中我在 || srec.old_val ||

之间添加了 3 '
EXECUTE IMMEDIATE
'update firsttable ctn2
set ctn.' || srec.column_name || ' = '''|| srec.old_val ||'''
where CTN2.ID = '|| srec.id;
end loop; 
end;

试试这个:

EXECUTE IMMEDIATE
   'update firsttable ctn2
    set ctn.' || srec.column_name || ' = :OldVal 
    where CTN2.ID = :id' 
using srec.old_val, srec.id;