1

下面是一个查询:

`UPDATE table1 SET column1 = coulmn2;`

在这里,column1 的值将被更新为 column2 的值。

但是,我正在编写一个 PROCEDURE,我想在其中更新列值,在循环中通过字符串变量传递列名。

例如

`str1 varchar(50) := 'column1';`
`str2 varchar(50) := 'column2';`
`str3 varchar(200) := 'update table1 set' + str1 + '=' + str2;`
`execute immediate str3;`

但是,这里的查询执行为: column1 = 'column2' column1 中的所有值都由 'column2' 字符串而不是 column2 的值更新。

我该如何解决这个问题?

4

1 回答 1

1

您必须将 SQL 语句构建为字符串,然后使用“立即执行”执行它;

create procedure ...
  sql_txt varchar2(32000)
begin
  sql_txt := ...;
  execute immediate sql_txt;
end;
于 2012-12-11T08:21:25.807 回答