Определение типа переменной с использованием другой динамической переменной. оракул. pl sql
Вот сделка, которую я пытаюсь определить MY_VARIABLE
который был бы типа MY_TABLE%ROWTYPE
,
Проблема в том, что MY_TABLE
является динамичным, и я получаю его как varchar2
переменная, так что-то вроде
TYPE my_variable
IS TABLE OF my_table%ROWTYPE;
не будет работать, потому что ошибки компиляции для PACKAGE BODY DENNIS.XXPORTER
YOUR_TABLE_NAME должен называть таблицу, курсор или переменную курсора
Теперь, как мне справиться с этим??
PS мне нужно my_variable
чтобы получить записи из ref cursor
, И я использовал ref cursor
не cursor
как я выполнил запрос, где имя таблицы (в from clause
) была переменная
1 ответ
Вы не можете объявить переменную, тип данных которой неизвестен до времени выполнения.
Если вы пытаетесь использовать динамический SQL, где структура результирующего набора также является динамической (если число столбцов и их типы данных являются фиксированными для любой передаваемой таблицы, вы можете статически объявить переменную записи соответствующего типа) тогда вам реально нужно будет использовать DBMS_SQL
пакет для выполнения оператора, для сбора данных о столбцах, которые возвращаются, и для привязки соответствующих переменных, в которые вы можете извлечь данные.
Вы можете увидеть пример использования DBMS_SQL
пакет в Тома Кайта dump_csv
функция, которая выводит результаты произвольного оператора SQL в файл.