У меня есть требование, когда я получаю имя таблицы и имя столбца динамически, мне нужно извлечь данные и вставить / обновить в таблице с помощью массового сбора. Насколько я проверял, я не смогу использовать FORALL для динамического sql, который использует динамическое имя таблицы / столбца. Пожалуйста, предложите любой обходной путь для вставки данных в коллекцию оптом
Declare
Type Type_xx is table of varchar2(200);
Lv_Coll type_xx:=type_xx();
Lv_Coll2 sys_refcursor;
Lv_tab varchar2(200):='C_Sample_1';
Lv_Col Varchar2(200):='SHORT_NAME';
Out_tab Varchar2(200):='Test';
Begin
OPEN Lv_Coll2 FOR 'Select '||Lv_Col||' from '||Lv_tab||'';
Loop
Fetch Lv_Coll2 bulk collect into Lv_Coll limit 100;
Exit when Lv_Coll.count < 100;
forall i in Lv_Coll.first..Lv_Coll.last
Execute Immediate 'insert into '||Out_tab||' values ('||Lv_Coll(i)||')';
End loop;
end;
выдает ошибку
ORA-06550: строка 16, столбец 17:
PLS-00801: внутренняя ошибка [*** ASSERT
в файле pdw4.c, строка 620; Неизвестное выражение Expr = 283 .;
Xanon__0x2b21bbdd8__AB [16, 17]]
Версия базы данных: 11.2.0.4.0