Как выбрать собственное имя таблицы и имена столбцов из самого оператора SELECT в Oracle? - PullRequest
0 голосов
/ 04 июля 2018

предположим, у меня есть две таблицы с именем table1, table2, я собираюсь выбрать несколько конкретных данных из этой таблицы. В то же время я хочу напечатать имя таблицы и столбцов в одной строке.

table1

------------
ID  |  COL1 
------------ 
1       VAL1
2       VAL2

table2

------------
ID  |  COL2 
------------ 
1       VAL3
2       VAL4

предположим, я хочу получить результат следующим образом

------------------------------------
TABLE_NAME | ID  | COL_NAME | VALUE
------------------------------------
table1        1     COL1      VAL1
table1        2     COL1      VAL2
table2        1     COL2      VAL3
table2        2     COL2      VAL4

Я могу сделать это просто путем жесткого кодирования имени таблицы и имен столбцов следующим образом

select 'table1' as TABLE_NAME,ID AS ID,'COL1' AS COL_NAME, COL1 AS VALUE FROM tabl1
union all
select 'table2' as TABLE_NAME,ID AS ID,'COL2' AS COL_NAME, COL2 AS VALUE FROM tabl2;

Но я хочу более динамичный способ, чем описанный выше. Есть ли способ сделать это?

1 Ответ

0 голосов
/ 04 июля 2018

Не уверен, как вы можете получить имя столбца, но имя таблицы вы можете получить, используя следующий SQL:

select o.object_name,  a.* 
  from <table_name> a
 inner join user_objects o
   on o.object_id = dbms_rowid.rowid_object(a.rowid);

Возвращать имя столбца динамически не имеет смысла, потому что вы всегда определяете столбцы статически в SQL (кроме синтаксиса *). Если вы не хотите поворачиваться к шаблону ключ-значение.

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