Эквивалент MySQL's \ G в Oracle SQL * Plus - PullRequest
9 голосов
/ 16 ноября 2010

В Oracle SQL * Plus результаты SELECT отображаются в табличной форме.Есть ли способ отобразить строку в ключ-значение (например, опция \G MySQL )?

База данных, над которой я работаю (схема не определена мной)имеет набор столбцов с именем, например, YN_ENABLED (YN = да нет), которые CHAR(1).Поэтому, когда я делаю запрос, я получаю результат типа

ID_MYTABLE   Y Y Y
------------ - - -
3445         Y N Y

Так что не совсем понятно, какие столбцы имеют какие значения (без открытой схемы в другом окне).

Ответы [ 4 ]

10 голосов
/ 16 ноября 2010

Не встроен в SQL PLus, но Том Кайт предоставил процедуру под названием print_table , которая делает это.Вы бы запустили это так:

SQL> exec print_table ('select * from mytable where id_mytable=123');

And see results like:

ID_MYTABLE      : 123
YN_ENABLED      : Y
YN_SOMETHING    : N
...
3 голосов
/ 16 ноября 2010

Я знаю, что ваш вопрос касается SQL * PLus, но вам может быть интересно узнать, что Oracle Developer SQL может сделать это. Эту функцию можно использовать, щелкнув правой кнопкой мыши на результатах запроса и выбрав «Просмотр отдельной записи ...».

2 голосов
/ 10 мая 2013

Вот хитрость, которая может сработать в крайнем случае, если вы не хотите (или не можете) установить новую процедуру на своем сервере:

  1. Выберите интересующую вас строку (или строки) вокно результатов запроса Oracle SQL Developer.
  2. Используйте shift-control-c в Oracle SQL Developer, чтобы скопировать строки и заголовки в буфер обмена.
  3. Вставьте в вашу любимую электронную таблицу (например, MS Excel).Теперь у вас есть записи в строках.
  4. Скопируйте только что вставленные строки в электронную таблицу.
  5. Используйте функцию "Специальная вставка - Транспонирование" вашей программы для работы с электронными таблицами, чтобы вставить значения в новую электронную таблицу,Теперь ваши записи должны быть в столбцах.
1 голос
/ 12 сентября 2013

Поздно, но я нашел это

SQL> select * from xmltable('ROWSET/ROW/*' passing xmltype(cursor(select * from emp where rownum = 1
)) columns name varchar2(30) path 'node-name(.)', value varchar2(30) path '.');

Найдено здесь

...