ORACLE 作為大型數據庫管理系統
它強大而完善的數據管理功能吸引著越來越多的人們的注意
本人在oracle 系統開發中
就developer/
編程有如下體會
希望能給初學者提供一些參考
一
使用設置菜單項屬性及form 數據項屬性限制不同用戶的訪問范圍
一個應用系統往往有不同的用戶
比如: 一個勞資系統中
一個用戶負責管理職工基本檔案部分
另一個用戶負責管理職工工資部分
管理職工基本檔案的用戶對職工檔案只有查詢的權限而不能有修改的權限
實現上述功能的一個簡單的實現辦法是:
設置兩個全局變量分別記錄用戶名和密碼
在進入系統時
兩個用戶分別輸入不同的用戶名和密碼
判斷用戶名
使SET_MENU_PROPERTY(MENU
ENABLED
FALSE)語句設置沒有查詢權限的用戶不能訪問菜單項
MENU
二
提高表連接的查詢速度
在表連接查詢時
常常用下列查詢方法查詢數據是
SELECT RECORDNO
NAME
AGE
FROM 表
WHERE 表
RECORDNO NOT IN
(SELECT RECORDNO
FROM 表
WHERE BIRTHDAY=
);
筆者發現
如果表
的長度為
條記錄
表
的長度為
條記錄
則要
分鐘才能出結果
原因是使用了比較運算符 NOT IN
它的邏輯測試速度是最慢的
利用外連接替換NOT IN 運算符
查詢時間則縮短為
秒
修改方法如下:
SELECT RECORDNO
NAME
AGE
FROM 表
表
WHERE 表
RECORDNO=表
RECORDNO(+)
AND 表
RECORDNO IS NULL
AND 表
BIRTHDAY(+)=
;
三
利用用庫模塊實現模塊資源共享
在編程中很多FROM 模塊需要共用一個程序單元
ORACLE FORM
提出了庫模塊的概念
使用庫模塊建立共享程序單元庫
既減少了磁盤占用空間
又增加程序的可維護性
使用庫模塊共享程序單元的過程是
點擊系統菜單的file
new
liberary選項
建立一庫模塊
在program units節點下增加一程序單元
寫入需共享程序的單元編碼
編譯後存盤
當FORM模塊需共享時
在模塊的Attached Libraries節點下連接庫模塊(此時屏幕會提示是否要刪除路徑
用戶選擇NO)
這樣
用戶便可在FORM模塊中直接使用共享程序單元了
四
易導致查詢數據錯誤的原因
在執行數據查詢時
經常發現查詢結果與預想的不同
主要原因是
使用 SELECT * FROM <表名> WHERE <字段名> LIKE
%
語句查詢不出 <字段名>為NULL的字段
此時需對字段為NULL的情況另外處理
如
SELECT * FROM <表名> WHERE <字段名> LIKE
%
OR <字段名> IS NULL
使用union 字段連接各表時
連接順序不是按書寫的先後順序
而是按連接表的第一個字段排序
因此
為了使表按預想的順序連接
需在各表中插入第一字段指定排序序號
五
使用視圖組織報表數據簡單且易於維護
ORACLE REPORT
提供了多種報表格式
但在報表中定義各種統計信息不僅繁瑣而且不利於今後的維護
使用視圖預先將各種統計
匯總數據准備好
可以起到事半功倍的作用
一旦數據源有所調整
只需修改後台視圖
而不用再改前端程序了
表
結構為
UNIT NAME RECORENO SEX
辦公室 王五
男
財務科 李四
女
首先建立視圖對數據進行匯總
CREATE VIEW RYTJ (UNIT
BOY
GIRL)
AS SELECT UNIT
SUM(DECODE(SEX
男
))
SUM(DECODE(SEX
女
) )
FROM 表
使用 ORACLE REPORT
對視圖
RYTJ
建立報表
六
給報表加序號的簡單辦法
ORACLE REPORT
沒有提供加序號功能
使用下述簡單方法可實現給報表自動加序號
在數據模板中
向查詢組中加入一個公式列 CF_XH NUMBER(
)
賦初值為
點擊[EDIT] 按鈕
插入編碼RETURN(:CF_CH+
)
From:http://tw.wingwit.com/Article/program/Oracle/201311/18262.html