从sqlplus会话返回数据时,我通常使用以下set命令来禁止除数据之外的所有内容。
Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 - 64bit Production
With the Partitioning, OLAP and Data Mining options
SQL> select sysdate from dual;
SYSDATE
---------
13-JUL-12
SQL> set pagesize 0 feedback off ver off heading off echo off;
SQL> select sysdate from dual;
13-JUL-12
但是当尝试从序列中获取数据时,看起来像是自动添加了一个选项卡。 是否需要设置另一个sqlplus参数?
SQL> select test_seq.nextval from dual;
2
SQL>
答案 0 :(得分:3)
你可以set tab off
,但这不是问题 - 你只需要获得空格而不是制表符。序列值是一个数字,SQL * Plus左边填充数字到列的宽度。如果您显示标题,则会看到它与(伪)列标题的最右侧字符对齐。
最简单的方法是停止它,因为你不知道值的大小,所以不能真正设置一个具有所需字符数的格式掩码,只是这样做:
select to_char(test_seq.nextval) as my_val from dual;
如果您选择了多个列,则每个值之间仍会有多个空格。
编辑添加:实际上并不完整。您还可以set numformat
使用格式掩码,我倾斜地提到;还可以set numwidth
。但是numwidth
必须至少为2,所以你仍然会在一位数之前得到一个空格(我认为这是一个符号);如果数字太多,则会显示#
。如果列标题长于numwidth
,那么无论如何它仍然会留下来。更多信息here。