我有一個程序,其中100個表必須逐一更新。所有表都有相同的列進行更新。爲了提高性能,我嘗試使用FORALL立即執行FORALL,但是我收到了很多編譯錯誤。立即執行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;
我希望人們能夠通過這段代碼瞭解我正在嘗試做什麼。如果有什麼大錯誤,請告訴我語法到底是什麼,以及是否可以用其他有效的方式完成。
非常感謝所有來我的方式的幫助。
我只是試過這個,但得到這麼多的編譯錯誤...任何建議? – Arunabh