3.2 设置SQL*Plus的运行环境
视频讲解:光盘\TM\lx\3\运行环境.mp4
SQL*Plus的运行环境是用来输入、执行SQL*Plus命令和显示返回结果的场所,设置合适的SQL*Plus运行环境,可以使SQL*Plus能够按照用户的要求运行和执行各种操作。SET命令也称SET变量或维护系统变量,利用它可为SQL*Plus交互建立一个特殊的环境。例如,设置屏幕上每一行能够最多显示字符数、设置每页打印的行数、设置某个列的宽度等。下面将对SET命令进行详细讲解。
3.2.1 简介SET命令
在Oracle 11g数据库中,用户可以使用SET命令来设置SQL*Plus的运行环境,SET命令的语法格式为:
SET system_variable value
system_variable:变量名。
value:变量值。
SET命令的常用变量名、可选值及其说明如表3.1所示。
表3.1 SET命令的常用变量名、可选值及其说明
续表
比如,用户可以设置在SQL*Plus命令提示符“SQL>”前面显示当前的系统时间。但需要注意的是,通过SET命令设置的环境变量是临时的,不是永久的。当用户退出SQL*Plus环境后,用户设置的环境参数会全部丢失。
【例3.1】 使用set time on命令设置在SQL*Plus命令提示符“SQL>”前面显示当前的系统时间,具体代码如下。
SQL> set time on 10:27:06 SQL>
3.2.2 使用SET命令设置运行环境
在对SET命令的功能及其若干常用变量选项了解之后,本节针对在Oracle操作过程中经常用到的几个变量选项及其实例应用进行详细讲解。
1.PAGESIZE变量
该变量用来设置从顶部标题至页结束之间的行数,其语法格式如下:
SET PAGESIZE value
value变量的默认值为14,根据实际情况的需要,用户可以修改value的值,该值是一个整数。
当SQL*Plus返回查询结果时,它首先会显示用户所选择数据的列标题,然后在相应列标题下显示数据行,上下两个列标题所在行之间的空间就是SQL*Plus的一页。一页中所显示的数据行的数量就是PAGESIZE变量的值。若要查看当前SQL*Plus环境中的一页有多少行,可以使用show pagesize命令。
【例3.2】 使用show pagesize命令显示当前SQL*Plus环境中的一页有多少行,具体代码如下。
SQL> show pagesize pagesize 14
注意
不要把当前窗口区域内能够显示的行数看作SQL*Plus环境中一页的行数,一页的行数由PAGESIZE变量值来决定。
如果默认的14行不符合实际情况的需要,可以修改PAGESIZE变量的值。
【例3.3】 使用set pagesize命令修改一页的行数为18,然后再使用新的pagesize值显示数据行,具体代码如下。(实例位置:光盘\TM\sl\3\1)
SQL> set pagesize 18 SQL> select user_id, username, account_status from dba_users;
本例运行结果如图3.1所示。
图3.1 使用set pagesize命令修改行数
说明
一页内的数据行包括两个列标题之间的数据行、上面的一个列标题、分隔线和空行。
2.NEWPAGE变量
该变量用来设置一页中空行的数量,其语法格式如下:
SET NEWPAGE value
value的默认值为1,根据实际情况的需要,用户可以修改value的值,该值是一个整数。
【例3.4】 首先显示当前SQL*Plus环境中的一页有多少空行,然后使用set newpage命令修改空行的数量,并通过检索数据记录来观察空行的改变,具体代码如下(实例位置:光盘\TM\sl\3\2)。
SQL> show newpage newpage 5 SQL> set newpage 1 SQL> select user_id, username, account_status from dba_users;
本例运行结果如图3.2所示。
图3.2 使用set newpage命令修改空行
3.LINESIZE变量
该变量用来设置在SQL*Plus环境中一行所显示的最多字符总数,其语法格式如下:
SET LINESIZE value
value的默认值为80,根据实际情况的需要,用户可以修改value的值,该值是一个整数。
如果数据行的宽度大于LINESIZE变量的值,当在SQL*Plus环境中按照LINESIZE指定的数量输出字符时,数据就会发生折行显示的情况。如果适当调整LINESIZE的值,使其值等于或稍大于数据行的宽度,则输出的数据就不会折行。所以在实际操作Oracle数据库的过程中,要根据具体情况来适当调整LINESIZE的值。
【例3.5】 首先使用show line命令显示当前SQL*Plus环境中一行可以显示的最多字符数量,然后使用set linesize命令修改一行中可以显示的最多字符数量为100,具体代码如下。
SQL> show line linesize 40 SQL> set linesize 100
4.PAUSE变量
该变量用来设置SQL*Plus输出结果是否滚动显示,其语法格式如下:
SET PAUSE value
value变量值有以下3种情况。
OFF:这是默认值,返回结果一次性输出完毕,中间的每一页不会暂停。
ON:表示输出结果的每一页都暂停,用户按Enter键后继续显示。
TEXT:在设置PAUSE的值为ON之后,若再设置TEXT的值,则每次暂停都将显示该字符串。当PAUSE的值为OFF时,设置TEXT值没有任何意义。
当在SQL*Plus环境中显示多行数据,并且一页无法容纳下这么多数据行时。如果PAUSE变量值为OFF,则SQL*Plus窗口输出的数据行会快速滚动,非常不利于用户查看。这就需要数据行在滚动时最好能够按页暂停,以便于用户逐页地查看输出结果。当把PAUSE变量的值设置为ON时,就可以实现控制SQL*Plus在显示完一页后暂停滚动,直到按Enter键后才继续显示下一页。另外,在设置PAUSE变量值为ON之后,还可以通过PAUSE变量设置暂停后显示的字符串,以便于提示用户操作。
【例3.6】 使用set pause命令设置显示结果按页暂停,并在暂停后显示“按<enter>键继续”字符串,具体代码如下(实例位置:光盘\TM\sl\3\3)。
SQL> set pause on SQL> set pause ’按<enter>键继续’ SQL> select user_id, username, account_status from dba_users;
本例运行结果如图3.3所示。
图3.3 使用set pause命令设置显示结果按页暂停
说明
当不再需要按页暂停时,可以使用SET PAUSE OFF命令取消显示结果的暂停功能,同时屏幕上不再有“提示字符串”输出。
5.NUMFORMAT变量
该变量用来设置显示数值的默认格式,该格式是数值格式,其语法格式如下:
SET NUMFORMAT format
format为数值的掩码,数值的常用掩码及其说明如表3.2所示。
表3.2 数值的常用掩码及其说明
当用户查询数据库中的数值时,SQL*Plus环境将使用默认的格式显示数值,即以10个字符的宽度和常规格式来显示数字。
【例3.7】 在SQL*Plus环境中,使用默认的格式显示scott.emp表中的雇员工资(即SAL字段的值),具体代码如下。
SQL> select ename, job, sal from scott.emp;
本例运行结果如图3.4所示。
图3.4 显示scott.emp表中的雇员工资
在上面的代码中,SAL字段列出了雇员的工资,工资的格式为默认格式。但在显示和打印工资时,通常习惯性把金额显示成带有两位小数的数值,并且为了便于阅读大金额,还需要给金额加上逗号分隔符和货币种类符号。
【例3.8】 在SQL*Plus环境中,使用$999,999,999.00格式显示scott.emp表中的雇员工资,具体代码如下(实例位置:光盘\TM\sl\3\4)。
SQL> set numformat $999,999,999.00 SQL> select ename, job, sal from scott.emp;
本例运行结果如图3.5所示。
图3.5 格式化工资