内容


使用 CLPPlus 为 IBM 数据服务器生成格式化的报表

为 DB2 和 Informix 数据生成报表的简易方法

Comments
免费下载:IBM® DB2® Express-C 9.7.2 免费版 或者 DB2® 9.7 for Linux®, UNIX®, and Windows® 试用版
下载更多的 IBM 软件试用版,并加入 IBM 软件下载与技术交流群组,参与在线交流。

用于 Linux,Unix 和 Windows 的 DB2 9.7 上 CLPPlus 工具的引进带来了比之前 DB2 工具更多的优势:

  • 它具有比旧版 DB 2 命令行处理器更多的报表功能。
  • 可以很容易地将功能用于定期数据报表或维护的脚本中。
  • 作为一个远程客户端工具,它可以连接到远程数据库且不需要您在本地对远程数据库进行分类。
  • 它的服务器独立性使您可以从一个单一的会话连接到不同的 IBM 数据服务器。
  • 它拥有多个到 DB2 的 SQL 兼容性特征,当从其他关系型数据库移植数据时这些特征是很有用的。这些特征可让您从其他数据库服务器产品移植 SQL 脚本到 DB2,即使是用最小的修改来移植。这大大减少了涉及修改不同数据库厂商的脚本的移植工作。

在以下章节中,学习 CLPPlus 支持的主要的报表格式选项,并使用示例帮助您入门。

运行 CLPPlus

您可以从所有的 DB2 9.7 及以后版本的安装程序包中获得 CLPPlus。自动默认与其他服务器和客户端的组件一起安装。它也是 DB2 Data Server Driver 包的一部分,您可以免费下载并进行独立安装(请参阅 参考文献)。

安装 CLPPlus 后,您可以通过以下三种方法中的任意一种来启动 CLPPlus:

  • 在 Windows 系统下,点击开始 > 运行打开命令行窗口。 输入clpplus,然后点击 确定
    图示 1. 从 Windows 系统下运行命令提示行启动
    显示如何从运行命令行窗口输入命令 clpplus 的截图
    显示如何从运行命令行窗口输入命令 clpplus 的截图
  • 从操作系统命令行窗口,输入clpplus,然后按回车键。 该方法同时适用于 Windows 系以及 AIX 系统和 Linux 系统的命令 shell。
    图示 2. 从命令提示符启动
    显示如何从命令提示符输入 clpplus 命令的截图
    显示如何从命令提示符输入 clpplus 命令的截图
  • 进入开始 > 所有程序 > IBM DB2,然后选择 Command Line Tools > Command Line Processor Plus
    图示 3. 从 GUI 界面启动
    显示如何选择 IBM DB2 > DB2COPY2 > Command Line Tools > Command Line Processor  Plus 的截图
    显示如何选择 IBM DB2 > DB2COPY2 > Command Line Tools > Command Line Processor Plus 的截图

开始学习报表选项

CLPPlus 提供多个命令,您可以使用这些命令为已执行的查询指定报表格式。这些命令大致可分为三类:

  • 使用 COLUMN 命令格式化列值
  • 使用 BREAKCOMPUTE 命令为特定的列值使用客户端聚合功能和相应的格式
  • 为已经生成的报表生成动态的页眉和页脚

在以下的章节中,将对这几类命令进行研究。

使用 COLUMN 命令

CLPPlus 提供几个选项对列进行格式化。这些选项在对包含多个不同类型和宽度的列的报表进行格式时是很有用的。COLUMN 命令允许对列值进行格式化,也允许修改列属性,例如页眉文字、宽度等等。清单 1 将给出 COLUMN 命令语法的一个示例:

清单 1. COLUMN 命令
COL[UMN] [column_name-1 [CLE[AR] |
                       FOR[MAT] format_spec |
                       HEA[DING] heading_text |
                       JUSTIFY [ LEFT | RIGHT | CENTER ] |
                       WRAPPED | TRUNCATED |
                       FOLD_AFTER |
                       FOLD_BEFORE |
                       NEWLINE |
                       LIKE <column_name-2> |
                       NULL <user-text> |
                       PRINT|NOPRINT |
                       NEW_VALUE variable-name |
                       OLD_VALUE variable-name | 
                       ALIAS  alias-name | 
                       ON |
                       OFF...]]

在清单 1 中,column_name-1 指定已执行查询的结果集中某个列的名称。COLUMN 命令用来指定列 column_name-1 的格式规范。

命令的各种选项如下:

  • CLEAR - 清除该列之前定义的规范。
  • FORMAT - 为数字和字母数据值指定格式规范。
  • HEADING - 提供列页眉文字。
  • JUSTIFY - 左、右或者居中调整列值。
  • WRAPPED - 当列值超过列的宽度时,将列值换行至下一行。
  • TRUNCATED - 当列值超过列的宽度时,截断超出的字符。
  • NULL - 当遇到 null 值时,打印用户提供的文本。
  • PRINT | NOPRINT - 指定是否打印结果集中的列。
  • ON | OFF - 为一个指定的列打开或关闭列规范。
  • LIKE - 复制 column-name-2 的格式规范至 column-name-1
  • FOLD_AFTER, FOLD_BEFORE - 当某条记录超过一行的有效字符数时,该选项可让您决定在何处折叠该记录 ———— 在当前列之前还是之后。
  • NEWLINE - 与 FOLD_AFTER 选项相同。
  • ALIAS - 提供一个别名,该别名的列格式规范将被用于 column-name-1

以下的示例将演示您要如何使用这些选项。 注意: 这些示例都假定 SAMPLE 数据库可用,对 DB2 服务器进行标准安装时将会带有该数据库。

根据列类型格式化

如果您想要根据列的类型格式化报表中的值,可以在列上定义列选项 FORMAT 来指定列值的报表格式。

清单 2 中的示例显示如何为两个不同的列类型使用 FORMAT 选项。使用十进制格式 "99999.99" 对列 SALARY 进行格式化。不遵守此格式的值将使用磅符 (#) 来显示。用格式 "A6" 对列 LASTNAME 进行格式化,从而将列值限制在最大为 6 个字符。

清单 2. 格式化列类型
SQL>column salary format 99999.99
SQL>column lastname format A6
SQL>firstnme, lastname, salary from employee ;

FIRSTNME     LASTNA      SALARY
------------ ------ -----------
CHRISTINE    HAAS      ########
MICHAEL      THOMPS    94250.00
             ON

SALLY        KWAN      98250.00
JOHN         GEYER     80175.00
IRVING       STERN     72250.00
EVA          PULASK    96170.00
             I

EILEEN       HENDER    89750.00
             SON

THEODORE     SPENSE    86150.00
             R

VINCENZO     LUCCHE    66500.00
             SSI

SEAN         O'CONN    49250.00
             ELL

限制列宽

该示例显示如何将列值限制在一个特定的宽度。列选项 WRAPPEDTRUNCATED 可以在列值超过指定的长度时让您选择是换行还是截断列值。默认情况下,将列设置为 WRAPPED 选项。

清单 3 中,FORMAT A8FIRSTNMELASTNAME 设置为具有 8 个字符的最大宽度。正如 清单 3 中所阐述的,多余的字符要么换行要么截断。圆点 (...)表示部分名称已被截断。

清单 3. 格式化列宽
SQL>column firstnme format A8 wrapped
SQL>column lastname format A8 truncated
SQL>select firstnme, lastname from emp;

FIRSTNME LASTNAME
-------- --------
CHRISTIN HAAS
E

MICHAEL  THOMPSON
SALLY    KWAN
JOHN     GEYER
IRVING   STERN
EVA      PULASKI
EILEEN   HENDE...
THEODORE SPENSER
VINCENZO LUCCH...
SEAN     O'CON...
DELORES  QUINTANA
HEATHER  NICHOLLS
BRUCE    ADAMSON
ELIZABET PIANKA
H

MASATOSH YOSHI...
I

MARILYN  SCOUTTEN

使用调整选项

下面,让我们看看使用 CLPPlus 您可以如何调整您的列。清单 4 中的示例假定您需要将所有字母值左对齐或居中,所有数字值右对齐。

清单 4. 调整列
SQL>column firstnme justify left
SQL>column midinit justify center
SQL>column salary justify right
SQL>select  firstnme, midinit, salary from employee;

FIRSTNME     MIDINIT      SALARY
------------ ------- -----------
CHRISTINE       I      152750.00
MICHAEL         L       94250.00
SALLY           A       98250.00
JOHN            B       80175.00
IRVING          F       72250.00
EVA             D       96170.00
EILEEN          W       89750.00
THEODORE        Q       86150.00
VINCENZO        G       66500.00
SEAN                    49250.00
DELORES         M       73800.00
HEATHER         A       68420.00
BRUCE                   55280.00
ELIZABETH       R       62250.00
MASATOSHI       J       44680.00
MARILYN         S       51340.00
JAMES           H       50450.00
DAVID                   57740.00
WILLIAM         T       68270.00
JENNIFER        K       49840.00
JAMES           J       42180.00
SALVATORE       M       48760.00

使用 BREAKCOMPUTE

用于报表生成的两个重要命令是 BREAKCOMPUTE。在报告生成期间同时使用这两个命令来基于列值格式化报表。使用 BREAKCOMPUTE 允许将报表拆分成相关记录的多个集合,从而使得报表更具有可读行和分类性。

BREAK 命令

BREAK 命令总是和 COMPUTE 命令一起使用。每次对某行进行打印操作时,BREAK 命令会将列值与之前的列值进行比较。当列值发生改变时,行处理中断并执行 COMPUTE 命令中指定的动作,然后执行 BREAK 命令中指定的 SKIP 动作。

以下是 BREAK 命令的语法:

BREAK ON <column-name>  [ SKIP  < PAGE |  n  > ]

此处 n 是一个整数。

COMPUTE 命令

COMPUTE 总是和 BREAK 命令一起使用。当到达某一指定列 (column-2) 的一个断点时,将会调用该列的 COMPUTE 命令。将会为 column-2 执行指定的聚合功能,该聚合功能针对 column-1 从上一个断点以来的所有值。

下面是语法:

COMPUTE <function LABEL text OF column-1>+ ON column-2

此处 function 是指:[ SUM | MAX | MIN | AVG | COUNT | NUM | STD | VAR ]。

针对列值进行中断

如果需要根据某个特定的列值将报表分成多个记录集,那么您可以使用 BREAK 命令。在 清单 5 的示例中,在列 EDLEVEL 上定义中断。所以每次当 EDLEVEL 列值改变时,都会用一个中断分隔符和跳过行对结果表进行中断。

清单 5. 针对列值进行中断
SQL>break on edlevel skip 2
SQL>select edlevel, firstnme, lastname, salary, bonus from employee order by edlevel;


EDLEVEL FIRSTNME     LASTNAME             SALARY       BONUS
------- ------------ --------------- ----------- -----------
     12 JOHN         PARKER             35340.00      300.00
     12 MAUDE        SETRIGHT           35900.00      300.00
     12 MICHELLE     SPRINGER           35900.00      300.00
*******


     14 THEODORE     SPENSER            86150.00      500.00
     14 SEAN         O'CONNELL          49250.00      600.00
     14 JAMES        JEFFERSON          42180.00      400.00
     14 PHILIP       SMITH              37750.00      400.00
     14 WING         LEE                45370.00      500.00
     14 GREG         ORLANDO            39250.00      600.00
     14 HELENA       WONG               35370.00      500.00
*******


     15 DANIEL       SMITH              49180.00      400.00
     15 MARIA        PEREZ              37380.00      500.00
*******


     16 JOHN         GEYER              80175.00      800.00

EDLEVEL FIRSTNME     LASTNAME             SALARY       BONUS
------- ------------ --------------- ----------- -----------
     16 IRVING       STERN              72250.00      500.00
     16 EVA          PULASKI            96170.00      700.00
     16 EILEEN       HENDERSON          89750.00      600.00
     16 DELORES      QUINTANA           73800.00      500.00
     16 BRUCE        ADAMSON            55280.00      500.00
     16 MASATOSHI    YOSHIMURA          44680.00      500.00
     16 JAMES        WALKER             50450.00      400.00
     16 DAVID        BROWN              57740.00      600.00
     16 SYBIL        JOHNSON            47250.00      300.00
     16 RAMLAL       MEHTA              39950.00      400.00
     16 JASON        GOUNOT             43840.00      500.00
     16 KIYOSHI      YAMAMOTO           64680.00      500.00
     16 ROY          ALONZO             31840.00      500.00
*******

中断后计算

如果需要根据特定的列值将您的报表分割成多个记录集,然后您需要对这些记录执行某种计算,那么您可以同时使用 BREAKCOMPUTE,如 清单 6 中所示。

清单 6 中,在列 EDLEVEL 上定义 BREAK。已在列 EDLEVEL 上定义 COMPUTE,该命令将在列 SALARY 上执行某种计算操作。所以每次当 EDLEVEL 列值改变时,报表将中断并对列 SALARY 执行指定的计算操作 MAX。每个断点后跳过的行的数量可以使用 BREAK 命令的 SKIP 选项进行修改。

清单 6. 基于断点执行计算
SQL> BREAK ON EDLEVEL SKIP 2

SQL> COMPUTE MAX LABEL MAX_SAL of SALARY on EDLEVEL

SQL> SELECT EDLEVEL, EMPNO, FIRSTNME, SALARY FROM EMPLOYEE ORDER BY EDLEVEL;

EDLEVEL EMPNO  FIRSTNME          SALARY
------- ------ ------------ -----------
     12 000290 JOHN            35340.00
     12 000310 MAUDE           35900.00
     12 200310 MICHELLE        35900.00
*******                     -----------
MAX_SAL                        35900.00



     14 000100 THEODORE        86150.00
     14 000120 SEAN            49250.00
     14 000230 JAMES           42180.00
     14 200120 GREG            39250.00
     14 200330 HELENA          35370.00
*******                     -----------
MAX_SAL                        86150.00
...
...

多个计算操作

清单 7 的示例中,对列 SALARY 上的每个断点执行多个计算操作。该示例显示如何在单个 COMPUTE 命令上定义逗号分割的多个计算。在 EDLEVEL 列的每个断点处分别对 DONUS 和 SALARY 列执行MAXAVG 操作。

清单 7. 多个计算操作
SQL> BREAK on EDLEVEL skip 1
SQL> COMPUTE MAX label MAX_BON of BONUS, AVG label AVG_SAL of SALARY 
     on EDLEVEL
SQL> SELECT EDLEVEL, FIRSTNME, BONUS, SALARY FROM EMPLOYEE ORDER 
     BY EDLEVEL;

EDLEVEL FIRSTNME           BONUS      SALARY
------- ------------ ----------- -----------
     12 JOHN              300.00    35340.00
     12 MAUDE             300.00    35900.00
     12 MICHELLE          300.00    35900.00
*******              -----------
MAX_BON                   300.00
*******                          -----------
AVG_SAL                             35713.33


     14 THEODORE          500.00    86150.00
     14 SEAN              600.00    49250.00
     14 JAMES             400.00    42180.00
     14 PHILIP            400.00    37750.00
     14 WING              500.00    45370.00
     14 GREG              600.00    39250.00
     14 HELENA            500.00    35370.00
*******              -----------
MAX_BON                   600.00
*******                          -----------
AVG_SAL                             47902.85

...
...

忽略值

可能有些情况,您想要对根据特定的列值分割的记录集进行一些计算,但是不希望在报表中打印该列。在这种情况下,您可以使用NOPRINT 选项。使用列 PRINTNOPRINT 选项允许或禁止在报表中打印某个特定的列。

清单 8 中,MAX 操作是在 EDLEVEL 列的每个断点处对列 SALARY 执行操作。但是由于为列 EDLEVEL 启用 NOPRINT,该列将从报表中忽略。如下所示,在报表中不打印列 EDLEVEL 不会影响定义在该列上的计算和中断操作。

清单 8. 忽略报表中的值
SQL>break on EDLEVEL skip 1
SQL>column edlevel noprint
SQL>COMPUTE MAX LABEL MAX_SAL of SALARY on EDLEVEL
SQL>SELECT EDLEVEL, EMPNO, FIRSTNME, SALARY FROM EMPLOYEE ORDER BY EDLEVEL;

EMPNO  FIRSTNME          SALARY
------ ------------ -----------
000290 JOHN            35340.00
000310 MAUDE           35900.00
200310 MICHELLE        35900.00
                    -----------
                        MAX_SAL
                       35900.00


000100 THEODORE        86150.00
000120 SEAN            49250.00
000230 JAMES           42180.00
000300 PHILIP          37750.00
000330 WING            45370.00
200120 GREG            39250.00
200330 HELENA          35370.00
                    -----------
                        MAX_SAL
                       86150.00
...
...

标题

CLPPlus 支持标题,这是改进您报表外观的一个有用的功能。将标题与页码和列选项一起使用可以使得更报表更有吸引力和信息性。也支持多行标题,是使用逗号分隔的标题列表来定义的。您可以选择将标题与页的左边、居中或右边进行对齐,您可以使用 skip 选项在每个标题后保留空白行。

以下列表详细显示 CLPPlus 支持的标题类型:

  • TTITLE: 页顶端标题;在报表每一页的顶端显示。
  • BTITLE: 页底端标题。与 TTITLE类似,在报表每一页的低端显示。
  • REPHEADER: 报表页眉;只在报表的开始处显示一次。
  • REPFOOTER: 报表页脚;只在报表的结束处显示一次。

使用 TTITLEBTITLE

清单 9 的示例显示报表中 TTITLEBTITLE 的用法 为了将标题与表的显示对齐,将行大小设置为 70. 此处顶端标题是右对齐,低端标题是居中对齐。

清单 9. 格式化列宽
SQL> ttitle right 'Employee Data'
SQL> btitle center 'IBM Corporation'
SQL> select empno, firstnme, lastname, edlevel, salary, bonus from emp ;
SQL> set linesize 70

                                                        Employee Data

EMPNO  FIRSTNME     LASTNAME        EDLEVEL      SALARY       BONUS
------ ------------ --------------- ------- ----------- -----------
000010 CHRISTINE    HAAS                 18   152750.00     1000.00
000020 MICHAEL      THOMPSON             18    94250.00      800.00
000030 SALLY        KWAN                 20    98250.00      800.00
000050 JOHN         GEYER                16    80175.00      800.00
000060 IRVING       STERN                16    72250.00      500.00
000070 EVA          PULASKI              16    96170.00      700.00
000090 EILEEN       HENDERSON            16    89750.00      600.00
000100 THEODORE     SPENSER              14    86150.00      500.00
000110 VINCENZO     LUCCHESSI            19    66500.00      900.00
000120 SEAN         O'CONNELL            14    49250.00      600.00
000130 DELORES      QUINTANA             16    73800.00      500.00

                            IBM Corporation

                                                        Employee Data

EMPNO  FIRSTNME     LASTNAME        EDLEVEL      SALARY       BONUS
------ ------------ --------------- ------- ----------- -----------
000210 WILLIAM      JONES                17    68270.00      400.00
000220 JENNIFER     LUTZ                 18    49840.00      600.00
000230 JAMES        JEFFERSON            14    42180.00      400.00
000240 SALVATORE    MARINO               17    48760.00      600.00
000250 DANIEL       SMITH                15    49180.00      400.00
000260 SYBIL        JOHNSON              16    47250.00      300.00
000270 MARIA        PEREZ                15    37380.00      500.00
000280 ETHEL        SCHNEIDER            17    36250.00      500.00
000290 JOHN         PARKER               12    35340.00      300.00
000300 PHILIP       SMITH                14    37750.00      400.00
000310 MAUDE        SETRIGHT             12    35900.00      300.00

                            IBM Corporation

页码

在下面的示例中,使用 PGNO 选项定义 TTITLE,这就使得在报表每一页的顶端显示页码。

清单 10. 页码
SQL> TTITLE right 'PAGE NO: ' PGNO
SQL> select empno, firstnme, salary, edlevel from employee order by edlevel ;
                             PAGE NO: 1

EMPNO  FIRSTNME          SALARY EDLEVEL
------ ------------ ----------- -------
000290 JOHN            35340.00      12
000310 MAUDE           35900.00      12
200310 MICHELLE        35900.00      12
000100 THEODORE        86150.00      14
000120 SEAN            49250.00      14
000230 JAMES           42180.00      14
000300 PHILIP          37750.00      14
000330 WING            45370.00      14
200120 GREG            39250.00      14
200330 HELENA          35370.00      14
000250 DANIEL          49180.00      15
000270 MARIA           37380.00      15
000050 JOHN            80175.00      16
000060 IRVING          72250.00      16
000070 EVA             96170.00      16

                             PAGE NO: 2

EMPNO  FIRSTNME          SALARY EDLEVEL
------ ------------ ----------- -------
000090 EILEEN          89750.00      16
000130 DELORES         73800.00      16
000150 BRUCE           55280.00      16
000170 MASATOSHI       44680.00      16
000190 JAMES           50450.00      16

标题中的变量

在此示例中,使用多行 TTITLE (逗号分隔) 来连接 PGNO 和列 NEW_VALUE 变量。可在任何列上进行定义 NEW_VALUE 变量,该变量在任何给定点保存该列的新列。同样地,OLD_VALUE 保存某列之前的值。新值和旧值变量可以分别与 TTITLEBTITLE 一起使用。

清单 11 中所示,TTITLE 分两行显示。第一行显示当前的页码,第二行显示 EDLEVEL 列的新值。同样地,BTITLE 显示 EDLEVEL 列的旧值。

清单 11. 标题中的变量
SQL> break on edlevel skip 1
SQL> column edlevel new_value new_edlevel_value old_value old_edlevel_value
SQL> TTITLE RIGHT 'PAGE NO: ' PGNO skip , center 'Education Level : '   new_edlevel_value
SQL> BTITLE CENTER 'Education Level : ' old_edlevel_value
SQL> select  edlevel, empno, firstnme, lastname, salary from employee order by edlevel;

                                                                             
                                                           PAGE NO: 1
                         Education Level : 12                             

EDLEVEL EMPNO  FIRSTNME     LASTNAME             SALARY
------- ------ ------------ --------------- -----------
     12 000290 JOHN         PARKER             35340.00
     12 000310 MAUDE        SETRIGHT           35900.00
     12 200310 MICHELLE     SPRINGER           35900.00
*******

     14 000100 THEODORE     SPENSER            86150.00
     14 000120 SEAN         O'CONNELL          49250.00
     14 000230 JAMES        JEFFERSON          42180.00
     14 000300 PHILIP       SMITH              37750.00
     14 000330 WING         LEE                45370.00
     14 200120 GREG         ORLANDO            39250.00
     14 200330 HELENA       WONG               35370.00
*******

     15 000250 DANIEL       SMITH              49180.00
     15 000270 MARIA        PEREZ              37380.00
*******

                         Education Level : 15                             

                                                           PAGE NO: 2
                         Education Level : 16                             

EDLEVEL EMPNO  FIRSTNME     LASTNAME             SALARY
------- ------ ------------ --------------- -----------
     16 000050 JOHN         GEYER              80175.00
     16 000060 IRVING       STERN              72250.00
     16 000070 EVA          PULASKI            96170.00
     16 000090 EILEEN       HENDERSON          89750.00
     16 000130 DELORES      QUINTANA           73800.00
     16 000150 BRUCE        ADAMSON            55280.00
     16 000170 MASATOSHI    YOSHIMURA          44680.00
     16 000190 JAMES        WALKER             50450.00
     16 000200 DAVID        BROWN              57740.00
     16 000260 SYBIL        JOHNSON            47250.00
     16 000320 RAMLAL       MEHTA              39950.00
     16 000340 JASON        GOUNOT             43840.00
     16 200170 KIYOSHI      YAMAMOTO           64680.00
     16 200340 ROY          ALONZO             31840.00
*******

     17 000160 ELIZABETH    PIANKA             62250.00

                         Education Level : 17                             

                                                           PAGE NO: 3
                         Education Level : 17                             

EDLEVEL EMPNO  FIRSTNME     LASTNAME             SALARY
------- ------ ------------ --------------- -----------
     17 000180 MARILYN      SCOUTTEN           51340.00
     17 000210 WILLIAM      JONES              68270.00
     17 000240 SALVATORE    MARINO             48760.00
     17 000280 ETHEL        SCHNEIDER          36250.00
     17 200240 ROBERT       MONTEVERDE         37760.00
     17 200280 EILEEN       SCHWARTZ           46250.00
*******

     18 000010 CHRISTINE    HAAS              152750.00
     18 000020 MICHAEL      THOMPSON           94250.00
     18 000140 HEATHER      NICHOLLS           68420.00
     18 000220 JENNIFER     LUTZ               49840.00

报表页眉和页脚

清单 12 显示如何在报表中使用报表页眉和报表页脚。与 TTITLE BTITLE 不同,他们都只在报表的开始和结束处显示,而不考虑报表的页数。

清单 12. 使用页眉和页脚
SQL> REPHEADER CENTER 'EMPLOYEE INFORMATION REPORT'
SQL> REPFOOTER CENTER 'END OF EMP INFORMATION REPORT'
SQL> select empno, firstnme, lastname, salary, bonus, edlevel from employee where edlevel
between 16 and 19;

                    EMPLOYEE INFORMATION REPORT                          

EMPNO  FIRSTNME     LASTNAME             SALARY       BONUS EDLEVEL
------ ------------ --------------- ----------- ----------- -------
000010 CHRISTINE    HAAS              152750.00     1000.00      18
000020 MICHAEL      THOMPSON           94250.00      800.00      18
000140 HEATHER      NICHOLLS           68420.00      600.00      18
000160 ELIZABETH    PIANKA             62250.00      400.00      17
000180 MARILYN      SCOUTTEN           51340.00      500.00      17
000210 WILLIAM      JONES              68270.00      400.00      17
000220 JENNIFER     LUTZ               49840.00      600.00      18
000240 SALVATORE    MARINO             48760.00      600.00      17
000280 ETHEL        SCHNEIDER          36250.00      500.00      17
200010 DIAN         HEMMINGER          46500.00     1000.00      18
200140 KIM          NATZ               68420.00      600.00      18
200220 REBA         JOHN               69840.00      600.00      18
200240 ROBERT       MONTEVERDE         37760.00      600.00      17
200280 EILEEN       SCHWARTZ           46250.00      500.00      17

14 rows were retrieved.

                   END OF EMP INFORMATION REPORT

结束语

在阅读文本和所介绍的示例之后,您应该可以使用命令行工具 CLPPlus 开始生成报表了。本文包括了一些重要的报表格式选项,这些选项会让您对 CLPPlus 中报表生成工具有一个更清晰和更好的理解。 CLPPlus 中的其他选项可用来对报表进行格式化并改进报表的可读性,从而增强报表。CLPPlus 的服务器独立的特性使得它具有一致性,从而最大限度地减少用户通过 IBM 数据服务器来学习工具的代价。


相关主题


评论

添加或订阅评论,请先登录注册

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=10
Zone=Information Management
ArticleID=751255
ArticleTitle=使用 CLPPlus 为 IBM 数据服务器生成格式化的报表
publish-date=08082011