2014-05-31 Created By BaoXinjian
1. Repot 對象
(1).數據模型對象
查詢、組、列、鏈接、用戶參數
(2).布局對象
重復幀、幀、領域、樣板、錨、
(3).參數表單對象
參數、字段、樣板
(4).PLSQL對象程序單元
(5).觸發器
(6).外部的Library庫
2. Report Styles
Tabular Report: 基本的類型報告,沒列對應於從數據庫中選擇的一個列
Group Above Reports:
Group Left Reports:
Form-Like Reports:
Form Letter Reports:
Mailing Label Reports:
Matrix Reports:矩陣報表
3. 數據模型 DataModel
查詢Query
組Groups
列(Formula、Summary、Placeholder Column)
連接(Data Link)
參數(System Paramters & User Paramters)
3.1. 查詢(Query)
內部查詢(SQL Query): 內部SQL,無法被其他Report所應用;
外部查詢(Ref Cursor Query):應用Package中的Ref Cursor,可以作為共享,具體的SQL可以定義在Report或者定義在Package中;
單查詢:Report只有一個Query;
多查詢:Report存在多個Query,可以使互相關聯的,也可以是不關聯的;
相關的多查詢:多個Query中相互關聯,一般用於主從式報表,兩者之間通過Datalink進行關聯
不相關的多查詢:Query之間不存任何關系,查詢先后順序由Query的順序位置決定,先上后下,先左后右
3.2. 組(Group)
1.組的功能
(1).將一個查詢的數據分成幾個集合,每個結合稱為組
(2).過濾查詢數據,通過組過濾對應的查詢結果
2.組的種類
(1).缺省組:建立Query時,自動產生Group
(2).用戶定義組:用於三種情況產生分組報表&產生矩陣報表&產生子匯總
3.組過濾
允許有條件的選擇由查詢檢索出來的數據,設定條件,過濾查詢結果
(1).Oracle Report封裝的過濾器
First Filter:顯示組內前N條數據
Last Filter:顯示組內后N條數
(2).用戶定義過濾器
該過濾器通過編寫PLSQL建立
4.組的層次結構
組的層次結構決定了在缺省布局對象中組的順序
如果沒有DataLink,組由Query的位置決定,自左向右,自上而下
如果存在DataLink,組由Query的主從關系決定
3.3. 列(Database、Formula、Summary、Placeholder Column)
1.缺省列
為查詢Select欲絕的每一項都建立一個列
2.用戶定義列 - 公式列(Formual Column)
為該列定義一個計算公式,Ex: return :sal+nvl(:com,0)
按建立的位置,分為Group Level & Report Level
3.用為定義列 - 匯總列(Summary Column)
提供的計算函數有:總和、平均值、最大值、最小值,標准差,方差、計數,%總計
按建立的位置,分為Group Level & Report Level
重要屬性:功能 、 源 、重設於
重設於:選擇匯總的頻率,是整個報表做一次匯總、每頁做一次匯總、還是每個組做一次匯總
3.4. 連接(Data Link)
數據連接通過主鍵和外部鍵定義了兩個Query之間的主/從關系
1.等值連接 & 非等值連接
2.SQL子句:Having & Start With & Where
3.條件:=、<、 >、 <=、 >、 >=、 <>、 Like、 Not Like
3.5. 參數(System Paramters & User Paramters)
1.系統參數(System Parameter)
系統默認參數,Oracle Report允許為每個報表修改標准運行設置
系統參數總共后11個
Ex: 打印的分數、貨幣表示方式、小數點表示方式、打印機設置、名字
2.用戶參數(User Parameter)
自定義參數,該對象用於保存在運行時用戶可以改變的值
在Select中代替列名字,條件,或者整個SQL
(1).引用方式 - 連接引用
i.用途:主要用於替換SQL語句或者PLSQL塊中的一個值或表帶式
ii.調用符號: :
iii.限制: 不能在Select中使用替換列名,不能在Form從句中使用連接引用
iv.例子
SELECT EMPNO, ENAME, SAL, COMM
FROM EMP
ORDER BY DECODE(:P_SORT, 1, EMPNO, 2, SAL);
(2).引用方式 - 置換引用
i.用途:用於替換Query Select中任何一部分
ii.調用符號: &
iii.限制: 不能在PLSQL塊中使用
iv.例子
SELECT &P_ENAME NAME, &P_EMPNO ENO
FROM &P_EMP;
3.值列表
用於用戶輸入參數時,自動彈出列表讓用戶選擇
建立方式:靜態值 & Select語句
4. Layout
5. 參數表單(Parameter Form)
當運行一個Report時,Oracle Report會彈出一個窗口
6 Oracle Report中的PLSQL
用於具體的數據庫事物處理
可以是使用數據庫操作語言(DML):Insert、Update和Delete操作
不支持數據庫定義語言(DDL): Oracle Report提供了SRW.DO_SQL封裝過程增加至Report中
(1).PLSQL異常處理
i. 用戶定義的異常處理:自定義Exception,再Raise
ii.標准封裝的異常處理:No_Data_Found / Too_Many_Rows / Invalid_Number / Zero_Divide / Others 等
iii.Oracle特有的異常類處理:Raise SRW.DO_SQL_FAILURE / SRW.INTEGER_ERROR / MAXROW_INERR /SRW.NULL_ARGUMENTS / SRW.PROGRAM_ABORT
(2). 可以使用的9中方式PLSQL結構塊
PLSQL程序庫(external libraries)
附件程序庫(attached libraries)
程式單元(report program units)
報表觸發器(report triggers)
組過濾器(group filters)
公式(formula)
驗證觸發器(validation triggers)
格式觸發器(format triggers)
動作觸發器(action triggers)
7. Oracle Report觸發器
觸發器可以分為三類:報表觸發器、數據模型觸發器、布局格式觸發器
1.報表觸發器
共有5個,分別在報表運行的不同階段運行
可以執行的操作:調整報表的格式, 執行初始化任務, 訪問數據庫
(1).Before Parameter Form
時間點:顯示運行參數表之前
用途: 存取並修改參數值、PLSQL全局變量
(2). After Parameter Form
時間點:顯示運行參數表之后
用途:檢驗和修改參數值,如果運行出現問題,則返回至參數表
(3). Before Report
時間點:運行報表之前
用途:用於初始化參數,特別是觸發Query中的SQL條件
(4). Between Pages
時間點:除去第一頁外,每一頁之前都會被觸發
用途:用於頁的格式化
(5). After Report
時間點:結束報表
用途:將報表輸出至對應目錄下或者Email,刪除臨時表,清除初始化處理
2. 數據模型觸發器
(1). 公式列觸發器
公式列中的代碼必須返回給公式,此公式列可以為序列,在Report不顯示
(2). 組過濾器
觸發時間點在檢索數據之后,顯示數據之前,限制記錄的出現與否,此功能也可以在Where子句中實行
例子:只顯示1000條數據
(3). 驗證觸發器
在系統參數和用戶自定義參數中編寫驗證觸發器,如果參數不正確,則停止報表運行
驗證觸發器必須返回一個布爾值,如返回False,則光標停留在參數中
例子:按部門打印員工列表時,對輸入參數部門號進行驗證
3. 布局觸發器
允許用戶在報表運行時根據一定條件動態地修改布局對象的顯示或隱藏
布局觸發中不餓能夠使用DML語句
例子:在工資單報表,只有主管可以看到工資明細
4. 動作觸發器
在預覽器中選中一個按鈕時執行的PLSQL過程,可以動態調用另一報表或者實執行PLSQL程序
8. SRW包
Oracle Report提供的特殊的封裝包,包括可在庫中應用的參數、過程和異常處理
PLSQL塊中可以應用SRW包的任何部分,但SRW只能在Oracle Report中調用,不能再其他工具(Forms Build)中使用
1. 用途
控制報表的運行
在運行時輸出信息
初始化域對象
執行DDL語句 (建立/刪除臨時表)
調用用戶接口
動態設置布局對象屬性,(字體或者填充)
2. 常用的SRW包例子
9. 矩陣報表
建立舉證報表必須滿足四個條件
1. 單查詢矩陣報表
2. 多查詢矩陣報表
3. 覺有合計的矩陣報表
4. 矩陣間斷式報表
10. 程序單元(Program Units)
11. 附加的程序庫(Attached Libraries)
12. PLSQL程序庫(External Libraries)
Thanks and Regards