Получить имена столбцов из запроса (не из таблицы) - PullRequest
1 голос
/ 06 апреля 2019

Есть ли какой-нибудь подход, аналогичный Java ResultSetMetaData для извлечения имен столбцов из запроса?Обратите внимание, что запрос User_Tab_Columns не может помочь мне, когда я сталкиваюсь с каким-либо запросом, например

Select 'Bruce' as "First_Name", 'Thomas' as "Middle_Name", 'Wayne' as "Last_Name"
From Dual

1 Ответ

2 голосов
/ 06 апреля 2019

Да, вы можете использовать dbms_sql.describe_columns.В этом ответе используется фрагмент кода, заимствованного из здесь

Если вы хотите, вы можете преобразовать его в функцию TABLE, которая возвращает имена столбцов для любого заданногозапрос, чтобы упростить вещи для вас.Я оставлю это как упражнение для вас!

declare
    p_query varchar2(32767) := 
              q'{
                  Select 'Bruce'   as "First_Name", 'Thomas' 
                      as "Middle_Name", 'Wayne' as "Last_Name"
                   From Dual
                 }';
    l_theCursor     integer default dbms_sql.open_cursor;
    l_descTbl       dbms_sql.desc_tab;
    l_colCnt        number;

begin

    dbms_sql.parse(  l_theCursor,  p_query, dbms_sql.native );
    dbms_sql.describe_columns( l_theCursor, l_colCnt, l_descTbl );

        for i in 1 .. l_colCnt loop
            dbms_output.put_line(  l_descTbl(i).col_name );
        end loop;

end;
/

Вывод

First_Name
Middle_Name
Last_Name


PL/SQL procedure successfully completed.

DEMO

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...