我有一个程序,其中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