ITPub博客

首页 > Linux操作系统 > Linux操作系统 > SQL *PLUS Report的开发方法

SQL *PLUS Report的开发方法

原创 Linux操作系统 作者:asiaidea 时间:2010-11-04 18:37:28 0 删除 编辑

使用SQL*PLUS 可直接在IE Browser中生成规整的字符型Report. 实现方法简单,布署容易。

方法:

1.       利用文本编辑器编写SQL*PLUS  脚本,保存成 .sql 文件。

2.       上传sql 文件至应用的sql 目录。

3.       注册Method 为SQL*PLUS 的Concurrent,并调用此 sql 文件.

SQL*PLUS Report 的格式化方法:

1.       改变列标题

COLUMN  <字段名或字段别名> HEADING <标题名>

例:

        COLUMN LAST_NAME      HEADING 'LAST NAME'

       COLUMN SALARY         HEADING 'MONTHLY SALARY'

       COLUMN COMMISSION_PCT HEADING 'COMMISSION'

 

      

2.       列标题自动折行

COLUMN  <字段名或字段别名> HEADING <标题名1-1|标题名1-2>

例:

       COLUMN SALARY    HEADING 'MONTHLY|SALARY'

 COLUMN LAST_NAME HEADING 'LAST|NAME'

 

3.       改变标题下划线格式(Format of underline)

SET UNDERLINE

例:

SET UNDERLINE =

/

 

4.       改变列的显示格式

COLUMN  <字段名或字段别名>  FORMAT <格式描述>

 

数值型格式描述与to_number函数基本一致,如:

$99.990

其它格式数据均用A(n)来设置宽度,如:

A10

如果有字符超出10,则会自动折行. 除非你做如下设置 :

SET  WRAP OFF

则多出的字符会被截掉.

 

5.       复制字段格式设置

COLUMN <目标字段名> LIKE <来源字段名> HEADING <标题名>

例:

COLUMN COMMISSION_PCT LIKE SALARY HEADING BONUS 

 

6.       不显示某一列

COLUMN <目标字段名> NOPRINT

 

7.       排序后,重复字段不显示(即分组)

BREAK ON <字段名>

例:

BREAK ON DEPARTMENT_ID;

       SELECT DEPARTMENT_ID, LAST_NAME, SALARY

       FROM EMP_DETAILS_VIEW

       WHERE SALARY > 12000

ORDER BY DEPARTMENT_ID;

 

       DEPARTMENT_ID LAST_NAME                  SALARY

       ------------- ------------------------- ----------

       20            Hartstein                   13000

       80            Russell                     14000

                     Partners                    13500

       90            King                        24000

                     Kochhar                     17000

               De Haan                     17000

 

8.       排序后,重复字段不显示,并用空行分隔(分组间间距加大)

BREAK ON <字段名> SKIP

N代表空行行数

BREAK ON <字段名> SKIP  PAGE

PAGE 代表分页

 

9.       每行均用空行分隔

BREAK ON ROW SKIP

N代表空行行数

BREAK ON ROW SKIP  PAGE

PAGE 代表分页

 

10.   复合式BREAK ON

BREAK ON DEPARTMENT_ID SKIP PAGE ON JOB_ID SKIP 1

首先基于department_id进行分页,然后基于job_id进行空行分隔

 

11.   分组汇总-基于字段

BREAK ON <字段名>

COMPUTE   LABEL

 

                Compute Functions

        SUM:        Sum of the values in the column.

        MINIMUM:    Minimum value in the column.

        MAXIMUM:    Maximum value in the column.

        AVG:        Average of the values in the column.

        STD:        Standard deviation of the values in the column.

        VARIANCE:   Variance of the values in the column.

        COUNT:      Number of non-null values in the column.

  NUMBER:     Number of rows in the column.

 

 

12.   分组汇总-基于页面

BREAK ON  PAGE

COMPUTE   LABEL

 

 

13.   分组汇总-基于报表

BREAK ON  REPORT

COMPUTE   LABEL

 

14.   定义页面页眉及页脚

页眉:

TTITLE  

页脚:

BTITLE  

其中的< POSITION > 有如下几种:

CENTER: 中间

LEFT: 左边

RIGHT: 右边

例:

       TTITLE CENTER "ACME SALES DEPARTMENT PERSONNEL REPORT"

BTITLE CENTER "COMPANY CONFIDENTIAL"

 

同时设置多个位置,可通过如下方法实现:

保持在同一行: 加“-”实现

例:

TTITLE LEFT ‘PAGE:’ –

             RIGHT ‘DATE:’

如果需要换行,可加SKIP 实现

例:

TTITLE CENTER 'A C M E W I D G E T' SKIP 1 -

             CENTER ==================== SKIP 1

                LEFT 'PERSONNEL REPORT' -

                RIGHT 'SALES DEPARTMENT' SKIP 2

 

在标题中加空格的方法:

COL

例:

TTITLE LEFT 'ACME WIDGET' SKIP 1 -

COL 6 'SALES DEPARTMENT PERSONNEL REPORT' SKIP 2

 

15.  定义报表页眉及页脚

REPHEADER  

REPFOOTER  

其它方法同页面页眉页脚.

 

16.  在页眉页脚中加入自定义变量

可先定义变量

COLUMN <字段名> NEW_VALUE <变量名>

然后通过SQL 语句为变量赋值

例:

COLUMN sys_time         FORMAT  a8      new_value       x_time  print

SELECT

                to_char(sysdate, 'hh:mi:ss') "sys_time"

  FROM

                dual;

 

17.  在页眉页脚中加入系统变量

SQL.PNO: 页码  TTITLE LEFT 'ACME WIDGET' RIGHT 'PAGE:' SQL.PNO SKIP 2

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/10359218/viewspace-677426/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2010-11-04

  • 博文量
    140
  • 访问量
    519110