2.4 SQL*Plus的报表功能

SQLPlus有一个强大的功能,就是能够根据用户的设计生成美观的报表。实际上,利用本章中前面介绍的知识已经能够生成一个简单的报表了,但是如果要生成规范的、美观的报表,还要学习SQLPlus的其他一些功能。

SQL*Plus的报表功能是利用它的命令来实现的。首先,用户要根据自己的意图,设计报表的显示格式,这包括报表的标题、各列的显示格式等。然后构造查询语句,决定要对哪些数据进行显示。最后还要决定把报表仅仅显示在屏幕上,还是存放在文本文件中,或者送往打印机。

一般情况下,生成一个报表需要许多条命令,如果每次在生成报表时都输入这么多的命令,是很麻烦的事情。通常的做法是把这些命令放到一个文本文件中,在需要时只要把这个文本文件读到缓冲区中,并使其执行即可。

2.4.1 报表的标题设计

报表的标题是利用SQL*Plus的两个命令来设计的,即TTITLE和BTITLE。其中TTITLE命令用来设计报表的头部标题,而BTITLE用来设计报表的尾部标题。

TTITLE命令设计的头部标题显示在报表每页的顶部。设计头部标题时,要指定显示的信息和显示的位置,还可以使标题分布在多行之中。TTITLE命令有以下几种执行格式:

·ttitle on|off:打开或关闭头部标题的显示,默认为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 蓝天集团公司员工工资统计表


如果在标题中要分开显示多条信息,例如制表人、当前页号等,可以在title命令中分别设置不同信息的显示格式、显示位置和显示内容。如果这些信息要在多行中显示,可以在两条信息之间使用SKIP选项。这个选项使后面的信息跳过指定的行数再显示,它需要一个整型参数,单位是行数。

例如,在刚才设计的标题的基础上,增加制表人和当前页号,作为副标题。副标题在主标题之下两行处显示。如果命令太长,一行容纳不下时,可以用“-”符号分行,将命令分为多行书写。满足上述要求的命令格式为:


ttitle center蓝天集团员工工资统计表skip 2 left-

制表人:sql.user right页码:sql.pno


这个标题的显示结果为:


蓝天集团员工工资统计表

制表人:SCOTT 页码:2


BTITLE命令的用法与TTITLE命令是一样的,区别在于BTITLE命令用来设计尾部标题,显示的位置在报表每页的底部。