以下是查询:
`UPDATE table1 SET column1 = coulmn2;`
此处,column1值将更新为column2值。
但是,我正在编写一个程序,我想在上面更新列值,在循环中我通过字符串变量传递列名。
E.g。
`str1 varchar(50) := 'column1';`
`str2 varchar(50) := 'column2';`
`str3 varchar(200) := 'update table1 set' + str1 + '=' + str2;`
`execute immediate str3;`
但是,这里的查询执行如下:column1 ='column2' column1中的所有值都由'column2'字符串更新,而不是由column2的值更新。
如何解决此问题?
答案 0 :(得分:1)
您必须将SQL语句构建为字符串,然后使用“execute immediate”;
执行它create procedure ...
sql_txt varchar2(32000)
begin
sql_txt := ...;
execute immediate sql_txt;
end;