5.2 SQL*PLUS环境设置
SQL*Plus运行环境由SQL*Plus环境参数和环境变量决定,环境参数决定SQL*Plus的内容输出格式,而环境变量则主要影响SQL*Plus所调用的编辑器。
5.2.1 修改环境变量
SQL*Plus环境变量与其中的普通变量一样,它们由DEFINE命令定义、检索和赋值,DEFINE命令的语法格式为:
DEF[INE][variable]│[variable=text]
其中:
variable:为所定义或所检索的变量名称。
Text:给出自变量值。在DEFINE语句中如果只给出变量名,SQL*Plus则检索指定变量值。在检索变量时,如果省略变量名,SQL*Plus列出当前已定义的所有变量。例如,SQL*Plus启动后执行DEFINE语句检索当前已定义的变量值,其显示结果如图5-12所示。
图5-12 DEFINE执行结果
其中,_EDITOR环境变量定义SQL*Plus所使用的编辑器。因为SQL*Plus是一个SQL语句和PL/SQL语句块解释执行器,所以其编辑功能非常有限。为了便于用户编辑命令文本,SQL*Plus提供了一个外部文本编辑器接口,用户执行EDIT命令即可调用_EDITOR环境变量所定义的任何一个用户熟悉的纯文本编辑器。默认时,SQL*Plus所调用的编辑器为NOTEPAD。用户修改_EDITOR变量值即可修改SQL*Plus所调用的文本编辑器。例如,下面命令将SQL*Plus编辑器更改为Edit.exe。
DEF-EDITOR=edit
执行结果如图5-13所示。
图5-13 更改编辑器执行结果
此时如果选择菜单编辑/编辑程序/定义编辑程序,弹出如图5-14所示的对话框,会发现编辑程序名称已经改为edit而不是notepad。
图5-14 定义编辑程序对话框
DEFINE所定义的变量称做替换变量,在SQL语句、PL/SQL语句块或SQL*Plus命令中可以使用“&变量名”格式引用。例如:
DEFINE col=JOB
BREAK ON&col
SELECT&col,ename
FROM emp;
执行结果如图5-15所示。
图5-15 定义变量执行结果
其中第二、三条命令相当于:
BREAK ON JOB
SELECT JOB,ename
FROM emp
执行UNDEFINE命令可以释放已定义的SQL*Plus变量,UNDEFINE命令的语法格式为:
UNDEF[INE]变量名……
例如,下面命令删除前面定义的col变量:
UNDEF col;
变量删除后,如果在SQL语句、PL/SQL语句块或SQL*Plus命令中再引用该变量时,Sql*Plus针提示用户输入变量值。如果使用DEFINE命令检索已删除的变量,SQL*P1us将返回如图5-16所示的错误信息。
图5-16 删除变量执行结果
5.2.2 设置环境参数
环境参数影响SQL*Plus的内容输出格式。在SQL*Plus启动时,它首先读取数据库管理员所建立的站点概要文件,然后读取用户所建立的用户概要文件来设置SQL*Plus运行环境。
这两个文件实际上为SQL*Plus命令文件,它们由SQL*Plus命令、SQL语句和PL/SQL块组成。站点概要文件只能由数据库管理员建立和编辑,普通用户不能直接访问该文件。当用户启动SQL*Plus建立与Oracle连接时,SQL*Plus首先执行站点概要文件中的命令。所以,数据库管理员使用站点概要文件可以为该站点的所有用户设置默认的SQL*Plus环境。站点概要文件的默认文件名为glogin.sql。
在SQL*Plus执行站点概要文件后再执行用户概要文件,当站点概要文件和用户概要文件执行后,SQL*Plus才执行用户在命令行中指定的启动文件。用户概要文件可以由启动SQL*Plus的用户建立和编辑,共默认文件名为login.sql,存储路径由HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE中的SQLPATH项值指定。
SQL*Plus输出内容格式可由SET命令设置,SET命令语法格式如下:
SET系统变量 变量值
SET1命令所设置的主要格式控制变量包括:
(1)FEED[BACK]:说明在执行查询后是否返回检索到的记录数统计信息,其取值为:
①n:查询结果至少为n条信息记录才显示记录数统计信息。N值为。时,禁止返回统计信息,此值相当于OFF,
②OFF:禁止返回记录统计信息。
③ON:允许返回记录数统计信息。
(2)HEA[DING]:控制在显示报表时是(ON)否(OFF)打印列标题。
(3)LIN[ESIZE]:设置SQL*Plus每行显示的最多字符数,默认值为80。
(4)LONG:设置显示LONG、CLOB和NCLOB数据类型和拷贝LONG类型值的最大字节宽度,最大值为2G字节。
①NEWP[AGE]:设置每页首行标题的空行数,NEWPAGE值设置为NONE时,报表页之间将不留空行。
②NULL:设置SELECT检索结果集合中空值的替换值,其值为一字符串。如:
SET NULL ‘<未设置>’
③NUMF[ORMAT]:设置数字值的默认显示格式,数字格式控制元素如表5-1所示。
(5)NUM[WIDTH]:设置数字型值的默认显示宽度。
表5-1 数字型列显示控制代码
续表
(6)PAGES[IZE]:设置每页显示行数,将PAGESIZE设置为0时,SQL﹡Plus将不显示际题、每页前导空行、分页行等格式信息。
(7)PAU[SE]:控制在显示新页之前是否暂停。将其值设置为OFF时,SQL﹡Plus连续显示所有报表页;将PAUSE值设置为ON时,SQL*Plus在显示下一页之前暂停,等待用户陵回车键后再显示一页,应用程序可为PAUSE设置一提示字符串,使得在每次暂停时向用户显示一提示信息。例如:
SETPAUSE ON
SETPAUSE‘按回车键显示下一页……’
(8)HEAD[EP]{││c│OFFION}:定义列标题分隔符。默认时列标题分隔符为“│”,执行SET HEADSEP C命令可将列标题分隔符设置为其他字符,但C不能为数字、字母或空格。例如:
Set headset>
Column enamel head职员>姓名
SELECT enamel,sal
FROM emp
WHERE sal<1000;
其执行结果如图5-17所示。
图5-17 执行结果
执行SET HEADSEP OFF命令将关闭列标题分隔符的控制功能,而SET HEADSEP ON命令的功能是把列标题分隔符重新设置为SQL*Plus的默认列标题分隔符“│”。执行SETHEADSEP OFF或SET HEADSEP ON命令时,它们只对新设置的列标题分隔符起作用,而在这两个命令执行之前所设置的列标题分隔符仍然有效。例如,接着上面的例子执行以下命令。
set headsep on
column sal head工│资
其执行结果如图5-18所示,这说明ename列仍使用>作为列标题分隔符,而sal列则在set headsep on命令执行后使用默认的列标题分隔符“│”。
图5-18 执行结果
图5-19 执行结果
TI[ME]:控制在SQL*Plus提示符前是(ON)否(OFF)显示当前系统时间。例如:
Set time on
Set time off
执行结果如图5-19所示。
VER[IFY]:设置SQL﹡Plus在变量替换前后是(ON)否(OFF)列出SQL语句或PL/SQL语句块文本。例如,下面为一SQL*Plus命令文件文本,其中首先打开VERIFY参数,所以在执行第一个SQL语句前,SQL*Plus列出变量替换前后的语句文本;之后关闭VERIFY参数,再执行该语句时,SQL*Plus不再列出变量替换前后的语句文本:
SET VERIFY ON
DEFINE enmne=‘SCOTT’
SELECT ename,deptno FROM emp WHERE ename=‘&ename’:
SET VERIFY OFF
SELECT ename,deptno FROM emp WHERE ename=‘&ename’;
上面命令文件的执行结果如图5-20所示。
图5-20 执行结果
5.2.3 SHOW命令的使用
SHOW命令可以用来显示一个SQL*Plus环境变量的值。所有可以用于SET命令的变量(如表5-2所示)都可以用于SHOW命令以查看它们的当前值。
表5-2 SHOW命令的其他选项
SHOW SGA要求以DBA身份登录。
例如,下面的查询显示出变量PAGESIZE和LINESIZE的当前值。
SQL>SHOW LINESIZE PAGESIZE
执行结果如图5-21所示。
图5-21 执行结果
SQL>SHOW ALL
该命令列出所有变量的值。执行结果如图5-22所示。
图5-22 执行结果
如果需要显示最近SQL语句返回代码,可执行下面语句:
SQL>SELECT*FROM notable;
SQL>SHOW SQLCODE
执行结果如图5-23所示。
图5-23 执行结果
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。