Oracle  11g从入门到精通(第2版) (软件开发视频大讲堂)
上QQ阅读APP看书,第一时间看更新

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 格式化工资