SQL*Plus用法指南

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服务器上,并以HTTPFTP方式访问。
这时@命令的命令的执行格式为(以HTTP为例):
@http://web服务器/文件名
使用@命令读取文件时,文件中可以包含多条SQL语句,每条语句以分号结束;或者可以包含一个PL/SQL块

文件被读人缓冲区中以后, SQL*Plus将按顺序执行文件中的代码,并将执行结果输出到显示器上。

@命令还有一个用法,就是在启动SQL*Plus 的同时,将指定的文件读入缓冲区并执行它。
这时@命令和文件名一起作为SQL*Plus的命令行参数,格式如下:

 sqlplus 用户名/口令 @脚本文件

注意,这种格式与以前提到的使用网络服务的格式是很相似的,但是仍然有区别,请注意观察:
sqlplus 用户名/口令@网络服务名
由于文件名网络服务名都表现为字符串,所以单纯从名字上无法区分到底使用了文件名还是网络服务名。
二者的区别在于第一种格式中在用户名/口令之后有一个空格,这时将把后面的参数解释为一个文件,并把这个文件加载到缓冲区中。
在第二种格式中,用户名/口令之后没有空格,这时将后面的参数解释为网络服务名。

get命令的作用与@命令相似,但是它只是把文件加载到缓冲区中,并不直接执行。

get 命令的的执行格式为:
get 文件名选项
其中文件名的默认扩展名为.sql,在get命令中可以省略。

目前get命令只支持本地的操作系统文件。
可以使用的选项有两个: LISTNO LIST 。

其中LIST选项指定将文件的内容读到缓冲区的同时,还要在显示器上输出,这是默认选项。
选项NOLIST使得文件的内容不在显示器上输出。
使用get命令时还要注意,在文本文件中只能包含一条SQL语句,而且不能以分号结束

也可以只包含一个PL/SQL块块以分号结束

例如:

get C:UsersAdministratorDesktopaa list
注意文件名选项LIST和NOLIST位置。

在使用@和get命令时要注意这些格式上的差别。

start命令与@命令是等价的,这里不再赘述。

写文件涉及的命令包括savespool

其中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 、acceptpause 。

这几条命令主要用在文本文件中,用来完成灵活的输入输出。
prompt命令用来在屏幕上显示指定的字符串。

这条命令的格式为:

prompt 字符串

注意这里的字符串不需要单引号限定,即使是用空格分开的几个字样串。

prompt命令只是简单地把其后的所有内容在屏幕上显示。

accept命令的作用是接收用户的键盘输入,并把用户输入的数据存放到指定的变量中,它一般与prompt命令配合使用。
accept命令的格式为:

accept 变量名 变量类型 prompt 提示信息 选项
其中变量名是指存放数据的变量,这个变量不需要要事先定义,可直接使用。

变量类型是指输入的数据的类型,目前SQL*Plus 只支持数字型字符型日期型数据的输入。
prompt用来指定在输入数据时向用户显示的提示信息。
选项指定了一些附加的功能,可以使用的选项包括:hidedefault 。
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 的两个命令来设计的,即TTITLEBTITLE 。

其中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命令用来设计尾部标题,显示的位置在报表每页的底部。

报表显示格式的设计

报表的显示格式是指报表中数据的显示格式

有两条命令用来设计报表的显示格式,它们是COLUMNBREAK 。
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选项指定数据的显示格式,主要用来设置字符型数字型日期型数据的格式。

报表中的格式字符串

原文地址:https://www.cnblogs.com/itcui/p/5626565.html