У меня есть база данных со многими пользователями, которые имеют одну и ту же таблицу (по тому же я имею в виду те же столбцы, но разные данные). Я хотел бы запустить тот же запрос в этих таблицах и навалом собирать результаты во временную таблицу или любой другой способ просмотра. До сих пор я код, приведенный ниже:Как создать курсор внутри цикла PL/SQL и массивные результаты в таблице
DECLARE
TYPE PDTABLE_12SEGTBL IS TABLE OF MTO_SG2420.PDTABLE_12%ROWTYPE;
COLLECTIONTBL PDTABLE_12SEGTBL;
LoopIteration pls_integer;
CompTblName varchar2(61);
CURSOR MTO_Cursor IS
SELECT owner, table_name
FROM ALL_TABLES
WHERE OWNER LIKE 'MTO_K%'
AND TABLE_NAME = 'PDTABLE_12';
BEGIN
LoopIteration :=1;
FOR item IN MTO_Cursor
LOOP
CompTblName := item.owner || '.pdtable_12';
DBMS_OUTPUT.PUT_LINE('Loop Iteration ' || LoopIteration || ' CompTblName' || CompTblName);
LoopIteration := LoopIteration + 1;
END LOOP;
END;
таблицы, которые я хотел бы, чтобы выполнить запрос на выглядеть следующим образом:
MTO_K01.pdtable_12
MTO_K02.pdtable_12
MTO_K03.pdtable_12
MTO_K04.pdtable_12
MTO_K05.pdtable_12
В переменной CompTblName, хранить полное имя таблицы включая имя пользователя успешно через каждую итерацию. Мой вопрос в том, как добавить запрос к приведенному выше коду, который запускает инструкцию select в переменной CompTblName и подталкивает результаты в созданную мной таблицу (COLLECTIONTBL
). Я искал в этом форуме и других местах и видел, что могу это сделать, используя команду fetch. Однако команда fetch должна быть помещена в курсор, который дает ошибку каждый раз, когда я помещаю его в цикле. Важно отметить, что я хотел бы объединить результаты всех итераций в COLLECTIONTBL
.