Как получить имена столбцов гипотетической таблицы, возвращаемой запросом Oracle SQL - PullRequest
0 голосов
/ 25 марта 2019

Предположим, у меня сложный SQL-запрос, такой как

select *
from mydbadmin.tablename
inner join mydbadmin.othertablename
on mydbadmin.tablename.id = mydbadmin.othertablename.id
where mydbadmin.tablename.y = 2

Какой запрос я могу получить, чтобы получить заголовки таблицы, в которой будет выполняться этот запрос?

Примечания:

Я проверил Запрос Oracle для получения имен столбцов , но это, похоже, не помогает, потому что я не пытаюсь найти имена из существующей таблицы *.

* У меня нет возможности фактически создать эту таблицу, поэтому создание ее и выполнение обычного запроса не вариант.

1 Ответ

2 голосов
/ 25 марта 2019

Вы можете использовать DESCRIBE_COLUMNS Процедура пакета DBMS_SQL

Вот критические шаги: открыть курсор, разобрать его и выполнить. Наконец, вызовите describe_columns, который возвращает определение в DBMS_SQL.DESC_TAB

  c := DBMS_SQL.OPEN_CURSOR;

  DBMS_SQL.PARSE(c, q'[SELECT 'x' col1, sysdate col2, 1 col3 FROM dual]', DBMS_SQL.NATIVE);

  d := DBMS_SQL.EXECUTE(c);

  DBMS_SQL.DESCRIBE_COLUMNS(c, col_cnt, rec_tab);

Пример вывода для первого столбца вышеприведенного запроса:

col_type            =    96
col_maxlen          =    1
col_name            =    COL1
col_name_len        =    4
col_schema_name     =    
col_schema_name_len =    0
col_precision       =    0
col_scale           =    0
col_null_ok         =    true

Полный пример см. В Документация Oracle

В качестве альтернативы вы можете использовать метод JDBC resultSet.getMetaData().

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