使用oracle序列时sqlplus set命令

时间:2012-07-13 16:25:00

标签: oracle sqlplus

从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>

1 个答案:

答案 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