Не можете да създадете %ROWTYPE
променлива за неизвестна таблица и не можете статично да се позовавате на имена на колони, когато не знаете името на таблицата по време на компилиране.
Можете да използвате пакета dbms_sql, за да се справите с напълно динамични SQL изрази. Ще трябва да подготвите SQL израза, да опишете колоните, за да разберете броя на колоните и техните типове данни, да свържете подходящи променливи и след това да извлечете данните. Това е много по-тромав начин за писане на код от примера, който сте публикували, но ви дава изключителна гъвкавост.
Има редица примери за използване на пакета dbms_sql в документацията, към която дадох връзка. Може също да искате да проверите функцията dump_csv на Tom Kyte, която записва резултата от произволна заявка в CSV файл с помощта на UTL_FILE
. Ако наистина искате да запишете данните в DBMS_OUTPUT
, можете просто да замените UTL_FILE
повиквания с DBMS_OUTPUT
. Но съм почти сигурен, че искате да направите нещо по-полезно от просто да запишете данните в DBMS_OUTPUT
буфер, така че процедурата на Том вероятно е по-близо до това, което наистина се опитвате да постигнете.