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;
我是第一次使用命令 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 ||
'
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;