Эквивалент MySQL \G в Oracle SQL * Plus

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

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

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

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


person Adrian Smith    schedule 16.11.2010    source источник
comment
Эта ветка OTN forums.oracle.com/forums/thread.jspa?threadID=923884 обсуждает это.   -  person codaddict    schedule 16.11.2010
comment
Спасибо! Я пытался погуглить, но, увы, эквивалент \G не слишком подходит для Google. Спасибо за ссылку.   -  person Adrian Smith    schedule 16.11.2010


Ответы (4)


Не встроен в 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
...
person Tony Andrews    schedule 16.11.2010
comment
Реализовал ли Oracle его с 2010 года? Я хотел бы использовать его внутри SQL Developer для экспорта более чистых результатов... - person GournaySylvain; 11.07.2016

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

person Leigh Riffel    schedule 16.11.2010

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

  1. Выберите интересующую строку (или строки) в окне результатов запроса Oracle SQL Developer.
  2. Используйте shift-control-c в Oracle SQL Developer, чтобы скопировать строки и заголовки в буфер обмена.
  3. Вставьте в свою любимую электронную таблицу (например, MS Excel). Теперь у вас есть записи в строках.
  4. Скопируйте строки, которые вы только что вставили в электронную таблицу.
  5. Используйте функцию «Специальная вставка — транспонирование» вашей программы для работы с электронными таблицами, чтобы вставить значения в новую электронную таблицу. Теперь ваши записи должны быть в столбцах.
person Peter Gluck    schedule 10.05.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 '.');

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

person sreimer    schedule 11.09.2013