Определение типа переменной с использованием другой динамической переменной. оракул. 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 в файл.

Другие вопросы по тегам