可以通过使用SET命令来设置SQL*PLUS的环境变量,从而达到控制SQL*PLUS 环境的目的。
SET命令的格式如下:
SET 环境变量 变量的值
可以通过使用SHOW命令来显示SQL*PLUS环境变量的配置。SHOW 命令的格式如下:
SHOW 环境变量|ALL
下面用一个例子来解释SET命令的用法。首先查看一下SQL*PLUS的环境变量ECHO 的设置。您可以输入例9-1的SQL*PLUS命令。
例9-1
SQL> show echo
例9.5
SQI>set echo on
例9-2
SQL> SELECT * FROM dept;
例9-3
SQL>save "d:\ Oracle\ming\echo_sample"
例9-7
SQL>@d:\ Oracle\ming\echo_sample
例9-7结果
SQL> SELECT * FROM dept
2 /
Loc DEPTNO DNAME
为了看到所有的SET变量值,可以使用SHOWALL命令,如例9-8。
例9-8
SQL> show all
例9-9
SQL> SHOW FEEDBACK
例9-9结果
用于6或更多行的 FEEDBACK ON SET FEEDBACK 的命令格式如下:
■ SET FEED[BACK]{6|n|OFF|ON}
当查询选择的数据行数大于n时,显示返回的数据行数。n为自然数,6为Oracle的默认值。
例9-9的结果告诉我们n为6,即当查询选择了至少6条记录时,显示返回的记录数。但如果查询选择的记录数少于6条时,就不显示返回的记录数。可以使用例9-10和例9-11 的SQL语句来验证这一点。
SET HEA【DING】{ON|OFF}:决定在报告中是否显示列的标题。
SET ARRAY【SIZE】{20|n}:限制SQL*PLUS每次从数据库中获取的行数,最多为5000行。
SET LINE【SIZE】{80|n}:设置每行的字符数。SETPAGE【SIZE】{24|n}:设置每页的行数。
SET LONG{80In}:设置显示LONG、CLOB和NCLOB值时最长的字节宽度。最大值为2G。
COLUMN命令的格式如下:
COL【UMN】【{列名|别名}【可选项】】
可选项:CLE【AR】FOR【MAT】 格式化模式|(HEA【DING】正文【JUS【TIFY】{对齐选项 }
NUL【L】 正文|PRI【NT】|NOPRI【NT】...
例9-13
SQL>col deptno for 999999
从例9-14显示的结果可以看出DEPTNO的宽度确实缩小了,仅为6位数字的宽度。因为 DEPTNO列为数字型,所以例 9-13 的 FOR【MAT】之后要用 999999。这里的999999 是格式化模式,每一个9表示一位数字(不显示0)。6个9就表示6位数字。
例9-14显示的结果表明LOC的宽度也有点大。可以使用如例9-15的SQL*PLUS命令来把该列的宽度设置为9个字符,之后再重新输入与例9-12完全相同的查询语句,如例9-16。
例9-15
SQL> col loc for a9
您可能已经注意到了例9-16显示的标题不太好理解,特别是LOC。可以使用例9-17 的SQL*PLUS命令把标题LOC设置为Location,之后再重新输入与例9-16完全相同的查询语句,如例9-18。
例9-17
SQL> col loc HEADING 'Location' FOR A9
从例9-18显示的结果可以看出标题LOC已变成了Location。HEA【DING】是用来设置列标题的。如果HEA【DING】之后的正文中包含了竖线(),该正文将以竖线为分界线,将竖线左右的正文分别显示在不同的行上(竖线右边的在下一行上)。
如果您的数据库字符集为中文,也可以将某一列的标题设置成中文。例如可以使用例9-19和例9-20的命令将标题LOC变成“地点”并显示dept表的内容。
例9-19
SQL> col loc HEADING '地 点' for a9
您已经修改了DEPTNO和LOC的显示格式及LOC的标题。如果已经记不清它们的格式了,可以使用例9-21和例9-22的SQL*PLUS命令来得到所需的信息。
例9-21
SQL> COL loc
从例9-21和例9-22显示的结果可以看出:一旦设置某一列的格式或标题,这些设置就一直保留在SQL*PLUS中。如果要把某一列的属性重新置回默认值的话,要使用CLEAR 选项。现在我们通过例9-23和例9-24来说明CLEAR选项的用法和含义。
例9-23
SQL> col loc clear
从例9-25 显示的结果很难看出工资(SAL)的单位到底是什么,可以先使用例9-26 的SQL*PLUS命令来格式化SAL列。
例9-26
SQL> col sal for $99,999.99
“S”为美元符号,“,”为千位符号,“.”为小数点。9为不显示前导0。现在重新输入与例9-23完全相同的查询语句,即例9-27。
我们用例9-28和例9-29来说明COLUMN命令的另外一个格式化模式"0"。例9-28
SQL> col sal for $009,999.99
从例9-29显示的结果可以看出,COLUMN命令的格式化模式"0"是强迫显示前导0。如果货币的单位不是美元,我们又如何显示这一货币单位呢?可以使用COLUMN命令的另外一个格式化模式"L",如例9-30和例9-31。
例9-30
SQL> col sal for L99,999.99
TTI【TLE】【正文 |OFF|ON】:设置每页顶部的头标。
BTI【TLE】【正文 |OFF|ON】:设置每页底部的脚标。
BREAK ON 列名【】别名】【SKIPn】:去掉重复的行,并在断开点跳过n行。CLEAR BREAK:清除所有的BREAK设置。
为了使BREAK有效地工作,需要在设置断点的列上使用ORDERBY子句。