使用变量使用其他列值更新一个列值

时间:2012-12-11 07:20:36

标签: sql oracle

以下是查询:

`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的值更新。

如何解决此问题?

1 个答案:

答案 0 :(得分:1)

您必须将SQL语句构建为字符串,然后使用“execute immediate”;

执行它
create procedure ...
  sql_txt varchar2(32000)
begin
  sql_txt := ...;
  execute immediate sql_txt;
end;