Вы можете дублировать показанную логику, но, за исключением необычных обстоятельств, я бы не рекомендовал делать это таким образом.Коллекции доступны и полезны в PL / SQL, но их распечатка выполняется циклически по коллекции - поэтому, если все, что вы делаете, это собирает что-то в памяти, чтобы распечатать его, лучшим выбором будет просто напечатать элементыисходя из курсора, когда курсор повторяется.Кроме того, выполнение одноэлементного SELECT внутри цикла, где данные, выбираемые во внутреннем SELECT, зависят от внешнего SELECT, эквивалентно выполнению JOIN - поэтому объединение вместо проверки связи с базой данных из одной строкиВЫБИРАЕТ.Собирая это вместе, я предлагаю сделать что-то вроде:
BEGIN
FOR aRow in (SELECT t2.COL2
FROM TABLE1 t1
INNER JOIN TABLE2 t2
ON t2.COL1 = t1.COL1
WHERE t1.WHATEVER = vSOMETHING_ELSE)
LOOP
DBMS_OUTPUT.PUT_LINE(aRow.COL2);
END LOOP;
END;
В PL / SQL, как правило, лучше всего использовать курсор для получения данных в нужной форме, а не собирать данные и затем выполнять итерацииколлекция, чтобы преобразовать это.Ваши данные хранятся в базе данных - научитесь там работать с ними.
Удачи.