---- oracle 作為大型數(shù)據(jù)庫管理系統(tǒng),它強大而完善的數(shù)據(jù)管理功能吸引著越來越多的人們的注意。本人在oracle 系統(tǒng)開發(fā)中,就developer/2000編程有如下體會,希望能給初學者提供一些參考。
---- 一、使用設(shè)置菜單項屬性及form 數(shù)據(jù)項屬性限制不同用戶的訪問范圍
---- 一個應用系統(tǒng)往往有不同的用戶,比如: 一個勞資系統(tǒng)中,一個用戶負責管理職工基本檔案部分,另一個用戶負責管理職工工資部分,管理職工基本檔案的用戶對職工檔案只有查詢的權(quán)限而不能有修改的權(quán)限。實現(xiàn)上述功能的一個簡單的實現(xiàn)辦法是:
---- 設(shè)置兩個全局變量分別記錄用戶名和密碼,在進入系統(tǒng)時,兩個用戶分別輸入不同的用戶名和密碼,判斷用戶名,使set_menu_property(menu1,enabled,false)語句設(shè)置沒有查詢權(quán)限的用戶不能訪問菜單項’menu1’。
---- 二、提高表連接的查詢速度
---- 在表連接查詢時,常常用下列查詢方法查詢數(shù)據(jù)是:
select recordno,name,age
from 表1
where 表1.recordno not in
(select recordno
from 表2
where birthday=’710618’);
---- 筆者發(fā)現(xiàn),如果表1的長度為6000條記錄,表2的長度為1000條記錄, 則要4分鐘才能出結(jié)果。原因是使用了比較運算符 not in ,它的邏輯測試速度是最慢的。利用外連接替換not in 運算符,查詢時間則縮短為50秒。修改方法如下:
select recordno,name,age
from 表1,表2
where 表1.recordno=表2.recordno(+)
and 表2.recordno is null
and 表2.birthday(+)=’710618’;
---- 三、利用用庫模塊實現(xiàn)模塊資源共享
---- 在編程中很多from 模塊需要共用一個程序單元。oracle form 4.5提出了庫模塊的概念。使用庫模塊建立共享程序單元庫,既減少了磁盤占用空間,又增加程序的可維護性。使用庫模塊共享程序單元的過程是:點擊系統(tǒng)菜單的file-new-liberary選項,建立一庫模塊,在program units節(jié)點下增加一程序單元, 寫入需共享程序的單元編碼, 編譯后存盤。當form模塊需共享時,在模塊的attached libraries節(jié)點下連接庫模塊(此時屏幕會提示是否要刪除路徑,用戶選擇no)。這樣,用戶便可在form模塊中直接使用共享程序單元了。
---- 四、易導致查詢數(shù)據(jù)錯誤的原因
---- 在執(zhí)行數(shù)據(jù)查詢時,經(jīng)常發(fā)現(xiàn)查詢結(jié)果與預想的不同,主要原因是:
---- 1.使用 select * from <表名> where <字段名> like ’%’ 語句查詢不出 <字段名>為null的字段。此時需對字段為null的情況另外處理。如:select * from <表名> where <字段名> like ’%’ or <字段名> is null
---- 2.使用union 字段連接各表時,連接順序不是按書寫的先后順序,而是按連接表的第一個字段排序。因此,為了使表按預想的順序連接,需在各表中插入第一字段指定排序序號。
---- 五、使用視圖組織報表數(shù)據(jù)簡單且易于維護
---- oracle report2.5提供了多種報表格式,但在報表中定義各種統(tǒng)計信息不僅繁瑣而且不利于今后的維護,使用視圖預先將各種統(tǒng)計、匯總數(shù)據(jù)準備好,可以起到事半功倍的作用,一旦數(shù)據(jù)源有所調(diào)整,只需修改后臺視圖,而不用再改前端程序了。
表1結(jié)構(gòu)為: unit name recoreno sex
辦公室 王五 1 男
財務(wù)科 李四 2 女
.. .. .. ..
---- 1. 首先建立視圖對數(shù)據(jù)進行匯總:
create view rytj (unit, boy,girl)
as select unit, sum(decode(sex,’男’
,1,0)) , sum(decode(sex,’女’,1,0) )
from 表1;
---- 2. 使用 oracle report 2.5 對視圖’rytj’建立報表。
---- 六、 給報表加序號的簡單辦法
---- oracle report 2.5 沒有提供加序號功能,使用下述簡單方法可實現(xiàn)給報表自動加序號:在數(shù)據(jù)模板中, 向查詢組中加入一個公式列 cf_xh number(4), 賦初值為0, 點擊[edit] 按鈕, 插入編碼return(:cf_ch+1)。
商業(yè)源碼熱門下載www.html.org.cn
新聞熱點
疑難解答
圖片精選