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 に答える