SQL是一种命令式的语言,它是用户操作数据库的最重要的一种方式。
SQL语句在执行时,需要有一个执行环境。
开发人员在开发软件时,最终的结果是形成一个应用程序。
在应用程序中可以嵌入SQL语句,利用这些SQL语句可以访问数据库。
这时应用程序作为数据库服务器的客户,与数据库服务器以客户/服务器模式工作。
把SQL语句嵌入到应用程序中的好处是使最终用户无需了解SQL的工作原理,也不需要知道SQL命令的使用方法,只要能够正确操作应用程序,就能够与数据库服务器进行交互。
然而对于数据库管理员,应用程序远远不能达到他们的目的,访问数据库最直接的方式是利用数据库软件提供的实用程序。
Oracle 提供了一个功能强大的实用工具--SQL*Plus。
SQL*Plus 是Oracle提供的一个客户端工具,也是远程客户访问数据库的一种重要途径。
在SQL*Plus 中可以执行任一条SQL语句,可以执行一个PL/SQL块,也可以执行SQL*Plus本身的命令,而且几乎所有的管理任务都可以在SQL*Plus 中完成。
SQL*Plus的基本用法
如果要使用SQL*Plus与数据库服务器进行交互,首先要登录到数据库服务器上,这时在SQL*Plus进程和数据库服务器之间将建立一条连接,它们以客户/服务器模式工作。
登录与退出
启动SQL*Plus的命令是sqlplus ,在操作系统提示符下输入sqlplus ,系统将显示版本、日期、版权等信息,然后提示用户输入用户名和口令。
如果输入正确,则在SQL*Plus和数据库服务器之间将建立一条连接,井显示服务器的信息,最后出现SQL*Plus的提示符“ SQL>”,在这个提示符下就可以输入需要执行的命令了。
如果以sys用户身份登录,在用户名之后还应该指定身份“ as sysdba ”或“ as sysoper ”。
启动SQL*Plus时,还可以在sqlplus命令之后直接指定用户名和口令,这时系统将不再提示输入用户名和口令,而是直接登录到数据库服务器。
格式是:用户名/口令。
如果在一台计算机上安装了多个数据库服务器,为了登录到正确的数据库,在进入SQL*Plus之前,先要设置环境变量ORACLE_SID ,将其值设置为要登录的数据库。
例如:
SET ORACLE_SID=orcl
如果数据库服务器运行在UNIX下,通过以下方式设置环境变量ORACLE_SID:
ORACLE_SID=orcl
EXPORT ORACLE_SID
在默认情况下, SQL*Plus和Oracle服务器位于同一台计算机上,启动SQL*Plus时,它将自动登录到本机的数据库服务器上。
如果SQL*Plus和Oracle服务器不在同一台计算机上,在登录时还要指定所使用的网络服务名。
例如:
sqlplus scott/tiger@orcl
网络服务名:是可以任意指定的,可以通过net_manager工具配置。
这时SQL*Plus和Oracle服务器将通过Oracle Net 进行通信。
无论采用哪种登录方式,登录成功后将出现SQL*Plus的提示符“ SQL>”。
SQL*Plus是一个基于字符界面的工具,所有的命令都需要手工输入。
在提示符之后输入的命令以分号结束。
如果命令太长,可以输入回车,在换行之后继续输入,这时在每行之前将自动出现当前的行号。
在命令的最后输入分号,然后回车,这条命令将提交给数据库服务器执行。
需要注意的是,分号并不是SQL命令的一部分,而是一条SQL命令结束的标志。
退出SQL*Plus时,在提示符之后输入命令QUIT或EXIT即可。
如果要在不退出SQL*Plus的情况下断开与数据库服务器的连接,则输入DISCONNECT(DISCONN)命令。
如果要重新连接,或者在已经连接的情况下以另一个用户的身份连接,则使用CONNECT(CONN)命令。
这条命令的格式为:
CONNECT 用户名/口令 as sysdba
如果是SYS用户,则使用“as sysdba”或者“as sysoper”参数。
如果是远程登录,还要在用户名和口令之后输入网络服务名。
如:CONNECT 用户名/口令@网络服务名 as sysdba
在SQL*Plus 中还可以执行操作系统命令。
host命令使得用户可以在不退出SQL*Plus的情况下执行操作系统命令。
在SQL*Plus提示符下执行host命令后,将进入操作系统提示符,在这里可以执行操作系统命令。
在操作系统提示符下输入exit命令,将返回SQL*Plus 。
SQL*Plus 的UNIX版本还提供了一个“!”命令,它使得用户可以在SQL*Plus提示符下直接执行UNIX命令。
UNIX命令执行结束后重新显示SQL*Plus提示符。
如何获取帮助信息
如果在使用SQL*Plus命令时有困难,可以使用HELP或?命令获得帮助信息。
首先,可以获得帮助索引,命令的格式为:
HELP INDEX
上述命令都属于SQL*Plus ,也就是说,这些命令只能在SQL*Plus 中执行。
读者在学习Oracle 的过程中,一定要搞清楚哪些是SQL*Plus命令,哪些是SQL命令。
通过HELP命令可以进一步获得每条命令的详细帮助信息。
获取帮助的命令格式为:
HELP 命令
例如:
HELP COPE
如何修改SQL*Plus的设置信息
在SQL*Plus 中有两类相关的设置信息,一类是SQL*Plus本身的设置信息,这类信息主要控制SQL*Plus的输出格式; 另一类是数据库服务器的设置信息,这类信息主要来自实例的参数文件。
显示SQL*Plus设置信息的命令是show,例如,显示当前登录用户的命令为:
show user
如果要显示SQL*Plus 的所有设置信息,执行“ show all”命令。
如果要显示某个具体的设置信息,可以在show命令之后跟上相关的关键字,例如:
show timing
下面列出了SQL*Plus主要的设置信息反其意义:
设置信息 可选值 默认值 意义
autocommit on|off|immediate off 控制DML语句执行后是否立即提交
autorecovery on|off off 开启或关闭自动恢复数据库的功能
define 用户自定义 & 在用户自定义变量前面的前缀字符
editfile 用户自定义 afiedt.buf 指定执行edit命令时打开的临时文件
linesize 用户自定义 80 指定一行的宽度,单位为字符
long 用户自定义 80 为long型数据指定显示宽度
null 用户自定义 "" 显示空数据时,代替的字符
sqlnumber on|off on 控制在多条SQL语句中,第2行之后继续使用SQL*Plus提示符还是行号
sqlprompt 用户自定义 sql> 指定SQL*Plus的提示符
sqlterminator 用户自定义 ; 指定SQL语句的结束标志
time on |off off 指定是否将当前时间作为提示符的一部分
timing on|off off 指定是否为每一条已执行SQL语句显示使用时间
如果要显示数据库服务器的参数设置信息,可以使用“ show parameter”命令,并在命令之后指定要显示的参数名称。
由于这些信息是从参数文件中读取的,因此只有特权用户可以查看这样的信息。
例如,要查看当前数据库的名称,执行如下命令:
show parameter db_name
在命令执行的结果中包含参数的名称、类型和参数值。
由于参数名都是字符串,在显示参数时,可以只指定参数名称的一部分,这样,系统将显示所有包含这个字符串的参数。
例如,要显示所有包含字符串“db_block ”的参数设置信息,可以执行如下命令:
show parameter db_block
修改SQL*Plus设置信息的命令是SET ,这样可以灵活控制SQL*Plus的显示格式。
例如,SQL*Plus的默认提示符是“SQL>”,如果要将提示符改为“ SQL*Plus》”,可以执行以下命令:
set sqlprompt sql>>
需要注意的是,改变后的设置信息只对SQL*Plus的当前启动起作用。
如果要经常修改这些设置信息,通常的做法是编写-个脚本文件,在脚本文件中指定这些设置信息,然后在SQL*Plus 中执行脚本文件。
实例启动与关闭
Oracle的实例是一组内存结构和后台进程的集合,通过实例,应用程序才可以访问数据库中的数据。
Oracle服务器是由实例和数据库组成的,一个实例只能打开一个数据库。
启动Oracle服务器的命令为startup ,这条命令只有SYS用户才可以执行。
在Windows 系统中,数据库服务器表现为一个系统服务。
所以,只要启动对应的系统服务,即可启动数据库服务器。
系统服务的命名规则为: OracleService+实例名称。
更简单的方也是在控制面板的管理工具中打开“服务”组件,查找Oracle服务器所对应的系统服务,使其启动。
关闭数据库服务器的过程与启动过程正好相反,首先关闭数据库,然后卸载数据库,最后关闭实例。
关闭Oracle服务器对应的命令为shutdown ,这条命令也是只能由SYS 用户执行。
在Windows 系统中, Oracle服务器同样可以作为一个系统服务来关闭。
例如:
net stop oracleserviceorcl
同样, Oracle服务器也可以通过“服务”组件进行关闭。
SQL*Plus中的缓冲区
SQL*Plus提供了一个命令缓冲区,用来保存最近执行的一条SQL语句,或者一个PL/SQL块。
用户可以反复执行缓冲区中的内容,也可以对缓冲区中的内容进行编辑。
执行缓冲区中的内容
执行缓冲区中内容的命令有两个:“/”和run 。
“/”命令的作用是执行缓冲区中刚刚输入的或者已经执行内容。
如果是一条SQL语句,它的结束标志是;,遇到分号,这条SQL语句就会执行。
如果在SQL语句执行后输入/命令,这条SQL语句将再执行一次。
如果是PL/SQL块,结束标志仍然是; ,只是在输入结束后还必须输入/命令,这个块才能执行。
如果再次输入“/”命令,这个块将再次执行。
run命令与“/”命令一样,也是再次执行缓冲区中的内容,只是在执行之前首先显示缓冲区中的内容。
编辑缓冲区的内容
缓冲区真正的意义在于用户可以编辑其中的内容,这样如果语句执行出错,用户可以很方便地进行修改,特别是长的、复杂的SQL语句或者PL/SQL块。
使用最频繁的编辑命令是edit (或ed )。
这条命令的作用是打开默认的编辑器(在Windows环境中为记事本),并将缓冲区中的内容放在编辑器中。
用户可以在编辑器中修改缓冲区中的内容,修改完后保存并退出编辑器,然后在SQL*Plus 中输入/命令,修改后的内容将在SQL*Plus 中执行。
执行edit命令时, SQL*Plus在操作系统当前目录中建立了-个临时文件,用来保存当前缓冲区的内容。
这个文件的默认文件名为“ afiedt.buf”。
需要注意的是,在这个临时文件中井不保存所有已经执行的SQL语句或者PL/SQL块,仅当执行edit命令时,才将当前缓冲区中的内容写入这个文件,文件中以前的内容将被覆盖。
如果要显示缓冲区中的内容,可以执行list (或者I )命令。
list命令以分行的形式显示缓冲区的内容,并在每一行前面显示行号。
如果要显示某一行的内容,可以在list命令之后指定行号,这样只显示指定的一行,并使这一行成为当前行,而不是显示所有内容。
还有一种简单的方法用来显示某一行的内容。
在SQL*PLUS提示符下直接输入一行的行号,结果与将行号作为参数的list命令是等价的。
append命令(或者a )的作用是在缓冲区中当前行的末尾追加文本。
在默认情况下,最后一行是当前行。
如果以某一行的行号作为参数执行了list命令,那么指定的行将成为当前行。
append命令的格式为:
APEEND 文本
append将把指定的文本追加到当前行的末尾。
注意追加的文本不需要用引号限定,否则引号将作为文本的一部分一起被追加,在关键字APPEND和文本之间留两个空格的位置。
append命令的作用是在当前行的末尾追加文本。
如果要在缓冲区中增加一行,就要使用input 命令。
input命令(或者i )的作用是在当前行之后追加一行或者多行。
在默认情况下,input命令在最后一行之后追加文本。
如果要在某一行之后追加,应该先执行list命令使该行成为当前行,然后再追加。
使用input命令追加文本时,可以只追加一行,这时input命令的格式为:
input 文本
如果要追加多行,则输入不带参数的input命令并回车,这时行号将变成ni 的形式,其中n是从当前行号的下一个数字开始的整数,表示该行内容是追加到缓冲区中的。
追加结束后以一个空行和回车符结束。
注意,在追加多行时, input命令为追加的新行重新显示了行号,即上面的2i 、3i等。
输入结束后,在下一行直接回车,这时重新显示SQL*Plus提示符,追加操作便告结束。
如果发现缓冲区中内容有错误,可以用edit命令打开编辑器,在编辑器中进行修改。
还有一种修改方法,就是change命令。
change (或者c )命令的作用是在缓冲区中当前行上用新的字符串代替旧的字符串。
这条命令的格式为:
change 当前字符串/替换字符串/
如果要清空缓冲区中的内容,可以执行del命令。
当缓冲区被清空后,就不能再执行edit命令进行编辑,也不能再执行list命令进行显示了。
如果只删除缓冲区中的一部分内容,则通过edit和list命令可以显示剩下的内容。
在默认情况下, del命令删除缓冲区中当前行的全部内容。
但是通过指定参数, del命令可以删除指定的一行或者多行。
del命令的格式有以下形式:
• del 开始行号 结束行号 删除开始行号和结束行号之间的行。
• del 开始行号 * 删除开始行号和当前行之间的行。
• del * 结束行号 删除当前行和结束行号之间的行。
• del last 删除最后一行。
其中开始行号和结束行号是指定的行号,开始行号必须小于结束行号。
符号“*”用来代表当前行,标识符last代表最后一行。
如何对操作系统文件进行读写
在SQL*Plus 中可以对操作系统中的文本文件进行简单的读写访问。
例如,事先将SQL语句或者PL/SQL块的代码存放在文本文件中,再把文本文件调入缓冲区中,使之执行。
或者把当前缓冲区中的内容保存到一个文件中,或者把SQL语句、PL/SQL块的执行结果保存到文件中。
读文件涉及的命令包括@、get 、start等命令。
@命令的作用是将指定的文本文件的内容读到缓冲区中,并执行它。
文本文件可以是本地文件,也可以是远程服务器上的文件。
如果是本地文件,@命令的命令的执行格式为:
@文件名
这里的文件名要指定完整的路径,默认的扩展名是.sql,如果脚本文件使用了默认的扩展名,则在@命令中可以省略扩展名。
如果是远程文件,必须将它存放到一个web服务器上,并以HTTP或FTP方式访问。
这时@命令的命令的执行格式为(以HTTP为例):
@http://web服务器/文件名
使用@命令读取文件时,文件中可以包含多条SQL语句,每条语句以分号结束;或者可以包含一个PL/SQL块。
文件被读人缓冲区中以后, SQL*Plus将按顺序执行文件中的代码,并将执行结果输出到显示器上。
@命令还有一个用法,就是在启动SQL*Plus 的同时,将指定的文件读入缓冲区并执行它。
这时@命令和文件名一起作为SQL*Plus的命令行参数,格式如下:
sqlplus 用户名/口令 @脚本文件
注意,这种格式与以前提到的使用网络服务的格式是很相似的,但是仍然有区别,请注意观察:
sqlplus 用户名/口令@网络服务名
由于文件名和网络服务名都表现为字符串,所以单纯从名字上无法区分到底使用了文件名还是网络服务名。
二者的区别在于第一种格式中在用户名/口令之后有一个空格,这时将把后面的参数解释为一个文件,并把这个文件加载到缓冲区中。
在第二种格式中,用户名/口令之后没有空格,这时将后面的参数解释为网络服务名。
get命令的作用与@命令相似,但是它只是把文件加载到缓冲区中,并不直接执行。
get 命令的的执行格式为:
get 文件名选项
其中文件名的默认扩展名为.sql,在get命令中可以省略。
目前get命令只支持本地的操作系统文件。
可以使用的选项有两个: LIST和NO LIST 。
其中LIST选项指定将文件的内容读到缓冲区的同时,还要在显示器上输出,这是默认选项。
选项NOLIST使得文件的内容不在显示器上输出。
使用get命令时还要注意,在文本文件中只能包含一条SQL语句,而且不能以分号结束。
也可以只包含一个PL/SQL块,块以分号结束。
例如:
get C:\Users\Administrator\Desktop\aa list
注意文件名选项LIST和NOLIST位置。
在使用@和get命令时要注意这些格式上的差别。
start命令与@命令是等价的,这里不再赘述。
写文件涉及的命令包括save和spool。
其中save命令用于将当前缓冲区中的内容写入一个操作系统文件,而spool命令用于将命令的执行结果输出到一个操作系统文件。
save命令的格式为:
SAVE 文件名称 选项
其中选项指定以什么样的方式写文件。
可以使用的选项有以下三个:
•CREATE 如果文件不存在,则创建。否则,命令执行失败。
•APPEND 如果文件不存在,则创建。否则,在文件末尾追加。
•REPLACE 如果文件不存在,则创建。否则删除原文件,重新创建。
如果不指定完整的路径,则在当前目录下产生这个文件,文件的默认扩展名是.sql。
spool 命令利用假脱机技术,用于将SQL*Plus的输出写入到文件中,它有以下几种用法:
•spool 得到当前spool 的状态,默认为不可用。
•spool 文件名 启动spool ,并打开指定的文件。
•spool off 关闭spool ,并将SQL*Plus 的输出写入文件中。
•spool out 关闭spool ,将SQL*Plus的输出写入文件中,并同时送往打印机。
如果在SQL*Plus 中以命令行的方式执行spool命令,那么从执行spool命令并打开文件开始,此后的所有输出,包括错误信息,以及用户的键盘输入,都将写入指定的文件,直到遇到“ spool off”或者“spool out”。
但是这些信息的写人是一次性完成,即在执行“ spool off”或者“ spool out ”的一瞬间,这些信息才一次全部写入文件,包括最后执行的“ spool off”或者“ spool out”命令本身。
文件的默认扩展名为.LST ,默认的路径是当前目录。
spool命令通常的用法是生成报表。
首先将精心设计的SQL语句存放在一个文件中,在输出的语句前后加上spool命令,然后将这个文件读到缓冲区中执行。
这样在写入的文件中只有命令执行的结果,而不包括SQL语句本身。
注:在执行文本文件时,只能使用@,而不能使用get来执行。
文件中SQL语句的执行结果显示在屏幕上,同时在当前目录下生成.LST 文件,文件的内容与屏幕上显示的结果完全一致。
如何在SQL*Plus中使用变量
为了使数据处理更加灵活,在SQL*Plus 中可以使用变量。
SQL*Plus 中的变量在SQL*Plus中的整个启动期间一直有效,这些变量可以用在SQL语句、PL/SQL块以及文本文件中。
在执行这些代码时,先将变量替换为变量的值,然后再执行。
用户自定义的变量
用户可以根据需要,自己定义变量。
有两种类型的自定义变量,第一类变量不需要定义,可以直接使用,在执行代码时SQL*Plus将提示用户输入变量的值。
第二类变量需要事先定义,并且需要赋初值。
第一类变量不需要事先定义,在SQL语句、PL/SQL块以及脚本文件中可以直接使用。
这类变量的特点是在变量名前面有一个“&”符号。
当执行代码时,如果发现有这样的变量,SQL*Plus将提示用户逐个输入变量的值,当用变量值代替变量后,才执行代码。
为了使用户在每次执行代码时不需要多次输入变量的值,可以在变量名前加上“&&”符号。
使用这种形式的变量,只需要在第一次遇到这个变量时输入变量的值,变量值将保存下来,以后就不需要不断输入了。
在SQL*Plus 中可以使用的第二类自定义变量需要事先定义,而且需要提供初值。定义变量
的命令是DEFINE 。定义变量的格式是:
DEFINE 变量名=变量值
变量经定义后,就可以直接使用了。
实际上,用DEFINE命令定义的变量和使用“&”的变量在本质上是一样的。
用DEFINE命令定义变量以后,由于变量已经有值,所以在使用变量时不再提示用户输入变量的值。
如果执行不带参数的DEFINE命令,系统将列出所有已经定义的变量,包括系统定义的变量和用“&”定义的变量,以及即将提到的参数变量。
注:这里用“&”定义的变量,是指&&而不是&,因为&&会保存变量值。
例如:
DEFINE salary=3000
在这里定义了变量,然后在SQL语句中就可以直接使用这个变量了。
在使用变量时,仍然用“&变量名”的形式来引用变量的值。
例如:
SELECT &salary FROM emp;
当一个变量不再使用时,可以将其删除。
undefine命令用于取消一个变量的定义。
删除一个变量的命令格式为:
undefine 变量名
参数变量
在SQL*Plus 中,除了用户自定义的变量外,还有一类变量,这就是参数变量。
参数变量在使用时不需要事先定义,可以直接使用。
前面我们讲述了get和@命令的用法。
这两个命令的作用是将一个文本文件加载到缓冲区中,使之执行。
因为文本文件的内容是固定的,在执行期间不能被修改,所以只能执行固定的代码,这就为灵活的数据操作带来了一定的困难。
例如,要查询某部门中员工的工资情况。
部门号事先不确定,而是根据实际情况临时确定的。
这样在文本文件的SELECT语句中就不能将部门号指定为一个固定值。
解决这个问题的一个办法是使用参数变量。
由于部门号是不确定的,所以在执行文本文件时可以将实际的部门号作为一个参数,在SELECT语句中通过参数变量引用这个参数。
参数在SQL*Plus的命令行中指定的格式为:
@文件名参数1 参数2 参数3 ••
这样在文本文件中可以用参数变量& l 、&2 、& 3分别引用参数1 、参数2 、参数3 ...
例如:
脚本文件中的内容如下:
select dname from dept,emp where dept.deptno=&1 AND sal>&2;
执行上面的脚本文件:
@aa 10 2000
与变量有关的交互式命令
SQL*Plus还提供了几条交互式命令,主要包括prompt 、accept和pause 。
这几条命令主要用在文本文件中,用来完成灵活的输入输出。
prompt命令用来在屏幕上显示指定的字符串。
这条命令的格式为:
prompt 字符串
注意这里的字符串不需要单引号限定,即使是用空格分开的几个字样串。
prompt命令只是简单地把其后的所有内容在屏幕上显示。
accept命令的作用是接收用户的键盘输入,并把用户输入的数据存放到指定的变量中,它一般与prompt命令配合使用。
accept命令的格式为:
accept 变量名 变量类型 prompt 提示信息 选项
其中变量名是指存放数据的变量,这个变量不需要要事先定义,可直接使用。
变量类型是指输入的数据的类型,目前SQL*Plus 只支持数字型、字符型和日期型数据的输入。
prompt用来指定在输入数据时向用户显示的提示信息。
选项指定了一些附加的功能,可以使用的选项包括:hide和default 。
hide功能使用户的键盘输入不在屏幕上显示,这在输入保密信息时非常有用。
default为变量指定默认值,在输入数据时如果直接回车,则使用该默认值。
pause命令的作用是使当前的执行暂时停止,在用户输入回车键后继续。
一般情况pause命令用在文本文件的两条命令之间,使第一条命令执行后出现暂停,待用户输入回车键后继续执行。
pause命令的格式为:
pause 文本
其中文本是在暂停时向用户显示的提示信息。
例如:
现在,构造一个文本文件, 演示这几条命令的用法。
文本文件e.sql的功能是统计某个部门的员工工资,部门号需要用户从键盘输入。
文本文件的内容如下:
prompt 工资统计现在开始
accept dno number prompt 请输入部门号: default 0
pause 请输入回车键开始统计...
SELECT ename, sal FROM emp WHERE deptno=&dno;
这个脚本文件的执行过程为:
@e
如果希望生成一个报表,那么可以在SELECT前后分别加上spool命令,将统计的结果写到一个文件中,或者发往打印机。
SQL*Plus报表功能
SQL*Plus有一个强大的功能,就是能够根据用户的设计生成美观的报表。
实际上,利用本章中前面介绍的知识已经能够生成一个简单的报表了,但是如果要生成规范的、美观的报表,还要学习SQL*Plus的其他一些功能。
SQL*Plus的报表功能是利用它的命令来实现的。
首先,用户要根据自己的意图,设计报表的显示格式,这包括报表的标题、各列的显示格式等。
然后构造查询语句,决定要对哪些数据进行显示。
最后还要决定把报表仅仅显示在屏幕上,还是存放在文本文件中,或者送往打印机。
一般情况下,生成一个报表需要许多条命令,如果每次在生成报表时都输入这么多的命令,是很麻烦的事情。
通常的做法是把这些命令放到一个文本文件中,在需要时只要把这个文本文件读到缓冲区中,井使其执行即可。
报表的标题设计
报表的标题是利用SQL*Plus 的两个命令来设计的,即TTITLE和BTITLE 。
其中TTITLE命令用来设计报表的头部标题,而BTITLE用来设计报表的尾部标题。
TTITLE命令设计的头部标题显示在报表每页的顶部。
设计头部标题时,要指定显示的信息和显示的位置,还可以使标题分布在多行之中。
TTITLE命令有以下几种执行格式:
• ttitle onloff :打开或关闭头部标题的显示,默认为on 。
• ttitle 头部标题信息:设计头部标题信息。
• ttitle :获得当前的标题设置信息。
其中ttitle on用来打开头部标题的显示功能,而ttitle off用来关闭这个功能,在默认情况下,这个功能是可用的。
用ttitle命令设计头部标题的操作是比较复杂的。
这条命令的格式为:
ttitle format 显示格式 显示位置 显示信息
其中format参数用来规定标题的显示格式,这个参数是可选的。
显示位置规定标题在一行中的位置,可选的位置有三个: CENTER (中间)、LEFT (左边)和RIGHT (右边)。
显示信息指定了标题的内容。
一般情况下,标题可以指定为以下内容:
·指定的文本
• SQL.LNO 当前的行号
• SQL.PNO 当前的页号
• SQL.RELEASE 当前Oracle的版本号
• SQL.USER 当前登录的用户名称
例如,设计一个显示在正中的标题,命令格式为:
ttitle center 蓝天集团公司员工工资统计表
如果在标题中要分开显示多条信息,例如制表人、当前页号等,可以在ttitle命令中分别设置不同信息的显示格式、显示位置和显示内容。
如果这些信息要在多行中显示,可以在两条信息之间使用SKIP选项。
这个选项使后面的信息跳过指定的行数再显示,它需要一个整型参数,单位是行数。
例如,在刚才设计的标题的基础上,增加制表人和当前页号,作为副标题。
副标题在主标题之下两行处显示。
如果命令太长,一行容纳不下时,可以用“-”符号分行,将命令分为多行书写。
满足上述要求的命令格式为:
ttitle center 蓝天集团公司员工工资统计表 skip 2 left -
制表人: sql.user rigth 页码: sql.pno
BTITLE命令的用法与TTITLE命令是一样的,区别在于BTITLE命令用来设计尾部标题,显示的位置在报表每页的底部。
报表显示格式的设计
报表的显示格式是指报表中数据的显示格式。
有两条命令用来设计报表的显示格式,它们是COLUMN和BREAK 。
COLUMN命令用来设计某一列数据的显示格式,而BREAK命令使数据根据某个标准分组显示。
COLUMN命令的作用是设计某一列的显示格式,包括列标题的文字和对齐方式、列数据的宽度和显示格式等。
这条命令是比较复杂的,主要表现为它有许多可以使用的选项。
读者应该多练习它的使用,注意观察命令执行的结果,从中总结经验。
COLUMN命令的格式为:
column 列名 选项
COLUMN命令的主要选项有以下几个:
•heading :指定列标题的显示文字。
•format :指定列数据的显示格式。
• justify :指定列标题的对齐方式,包括左( left )、居中( center )、右( right )。
•null : 当列数据为空时,将显示指定的文本。
• wrappedltruncated :规定当列标题或数据超出规定的宽度时,如何显示。
其中wrapped 为默认值表示换一行继续显示。
Truncated表示截断余下的数据。
其中heading选项用来规定列的标题。
默认情况下,列的标题就是列的名字。
用户可以定制自己喜欢的列标题。
如果列标题中有空格,要用双引号限定。
还可以把列标题中的文字分成两行显示,格式是:“第一行文字|第二行文字”。
例如,通过下面的命令为ename列定义标题为“姓名”,为sal列定义标题为“工资。
column ename heading 姓名
column sal heading 工资
SELECT ename, sal FROM emp;
format选项指定数据的显示格式,主要用来设置字符型、数字型和日期型数据的格式。
报表中的格式字符串