100 個のテーブルを 1 つずつ更新する手順があります。すべてのテーブルには、更新する同じ列があります。パフォーマンスを向上させるために、FORALL で Execute Immediate を使用しようとしていますが、多くのコンパイル エラーが発生しています。
即時実行を使用して、FORALL ステートメント内で 100 の異なるテーブルを更新することは構文的に可能ですか。
私のコードは次のようになります。
Declare
TYPE u IS TABLE OF VARCHAR2(240) INDEX BY BINARY_INTEGER;
Table_List u;
FOR somecursor IN (SELECT variable1, variable2 FROM SomeTable)
LOOP
BEGIN
Table_List(1) := 'table1';
Table_List(2) := 'table2';
......
......
table_list(100):= 'table100';
FORALL i IN Table_List.FIRST .. Table_List.LAST
EXECUTE IMMEDIATE 'UPDATE :1 SET column = :3 WHERE column = :2'
USING Table_List(i), somecursor.variable1, somecursor.variable2 ;
end loop;
このコードを通じて、私がやろうとしていることを人々が理解してくれることを願っています。何か大きな問題がある場合は、構文が正確に何であるか、また他の効率的な方法で実行できるかどうかを教えてください。
私のところに来るすべての助けに感謝します。