2010-11-16 660 views
8

在Oracle的SQL * Plus中,SELECT的结果以表格形式显示。有没有办法以键值方式显示行(如MySQL的\G option)?Oracle的SQL * Plus中的 G的等价物

我正在处理的数据库(模式不是由我定义的)有一堆名为例如YN_ENABLED(YN =是否),它们是CHAR(1)。所以,当我做一个查询我得到这样

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

结果所以它不是真正清楚哪些列具有哪些值(无需架构在另一个窗口中打开)。

+1

这OTN线http://forums.oracle.com/forums/thread.jspa?threadID=923884讨论。 – codaddict 2010-11-16 10:56:43

+0

谢谢!我试过谷歌搜索,但唉“相当于\ G”不太可Googleable ..感谢您的链接。 – 2010-11-16 10:59:13

回答

10

未内置到SQL PLus,但Tom Kyte提供了一个名为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 
... 
+0

自2010年以来Oracle是否实施了它?我想在SQL Developer中使用它来导出更清晰的结果... – GournaySylvain 2016-07-11 10:53:47

3

我知道你的问题是关于SQL * PLus,但你可能有兴趣知道Oracle的SQL Developer可以做到这一点。右键单击查询结果并选择“Single Record View ...”可以使用该功能。

1

这里的,如果你不想(或不能)在服务器上安装一个新的过程,可能在紧要关头做了一招:

  1. 在Oracle选择感兴趣的行(或列) SQL Developer 查询结果窗口。
  2. 在Oracle SQL Developer中使用shift-control-c将行和 标题复制到剪贴板。
  3. 粘贴到您最喜欢的电子表格 (例如,MS Excel)。现在你有行记录。
  4. 将刚刚粘贴到电子表格中的行复制到电子表格
  5. 使用电子表格程序的“选择性粘贴 - 转置”功能将这些值粘贴到新的电子表格中。现在你的记录应该在列中。
1

的迟到,但我发现这个

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 '.'); 

找到here