Получение набора результатов sys_refcursor на PL/SQL

У меня есть функция, которая возвращает динамический SQL-запрос sys_refcursor, поэтому столбцы динамически возвращаются этим курсором. Я хочу запросить sql этого Курсора после выполнения моей функции

Select tryit('MyTable_Name',' condition = conditionParameter and  condition2=Parameter2') retCursor 
from dual

Возвращает курсор на PL / SQL SQL Windw в виде одного столбца и одной строки. После нажатия на три точки, он возвращает resultset. Как я могу получить resultset без нажатия каких-либо точек.

При приведении функции к xmltype и передаче ее столбцов и приведения как xmltable, он показывает resultset, но мне нужно, чтобы столбцы создавались динамически в соответствии с переданными параметрами.

Select * from  xmltable('/ROWSET/ROW'
PASSING xmltype(tryit('MyTable_Name','condition = conditionParameter and  condition2=Parameter2'))
columns
Col1  PATH 'Col1',
Col2  PATH 'Col2',
Col3  PATH 'Col3' ,
Col4  PATH 'Col4')

Примечание: Oracle 11g, PL / SQL Developer 8

1 ответ

  1. В SQL Developer (и я предполагаю, что есть что-то похожее в PL/SQL Developer), вам не нужен SQL-запрос, чтобы обернуть функцию; вместо этого вы можете запустить сценарий PL / SQL, который выведет курсор:

    VARIABLE cur REFCURSOR;
    
    BEGIN
      :cur := tryit(
               'MyTable_Name',
               ' condition = conditionParameter and  condition2=Parameter2'
             );
    END;
    /
    
    PRINT cur;