1

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

1 回答 1

3

你可以set tab off,但这不是问题——你只会得到空格而不是制表符。序列值是一个数字,SQL*Plus 将数字左填充到列的宽度。如果您显示标题,您会看到它与(伪)列标题的最右侧字符对齐。

阻止它的最简单方法是,因为您不知道值的大小,因此无法真正设置具有所需字符数的格式掩码,只需执行以下操作:

select to_char(test_seq.nextval) as my_val from dual;

如果您选择的列不止一列,但每个值之间仍会出现多个空格。

编辑添加:实际上这还不够完整。您也可以set numformat使用我斜指的格式掩码;并且还可以set numwidth。但numwidth必须至少为 2,因此您仍然会在一位数之前获得一个空格(我认为允许符号);如果数字有太多数字,它将显示#。如果列标题长于numwidth它仍然会保留它。更多信息在这里

于 2012-07-13T16:32:47.020 回答