国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數(shù)據(jù)庫 > Oracle > 正文

ORACLE Developer/2000 編程技巧六則

2024-08-29 13:46:38
字體:
來源:轉載
供稿:網(wǎng)友
---- Oracle 作為大型數(shù)據(jù)庫治理系統(tǒng),它強大而完善的數(shù)據(jù)治理功能吸引著越來越多的人們的注重。本人在oracle 系統(tǒng)開發(fā)中,就developer/2000編程有如下體會,希望能給初學者提供一些參考。

---- 一、使用設置菜單項屬性及form 數(shù)據(jù)項屬性限制不同用戶的訪問范圍

---- 一個應用系統(tǒng)往往有不同的用戶,比如: 一個勞資系統(tǒng)中,一個用戶負責治理職工基本檔案部分,另一個用戶負責治理職工工資部分,治理職工基本檔案的用戶對職工檔案只有查詢的權限而不能有修改的權限。實現(xiàn)上述功能的一個簡單的實現(xiàn)辦法是:

---- 設置兩個全局變量分別記錄用戶名和密碼,在進入系統(tǒng)時,兩個用戶分別輸入不同的用戶名和密碼,判定用戶名,使SET_MENU_PROPERTY(MENU1,ENABLED,FALSE)語句設置沒有查詢權限的用戶不能訪問菜單項’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分鐘才能出結果。原因是使用了比較運算符 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ù)查詢時,經常發(fā)現(xiàn)查詢結果與預想的不同,主要原因是:

---- 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ù)源有所調整,只需修改后臺視圖,而不用再改前端程序了。

表1結構為: UNIT NAME RECORENO SEX

辦公室 王五 1 男

財務科 李四 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)。



發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 东丽区| 楚雄市| 新营市| 福州市| 祁连县| 龙游县| 杂多县| 大同县| 安陆市| 周至县| 扎鲁特旗| 柘荣县| 同心县| 孙吴县| 东源县| 波密县| 新干县| 淮安市| 临安市| 公主岭市| 中方县| 淮南市| 和静县| 维西| 镇康县| 永丰县| 天祝| 栾川县| 吉木萨尔县| 祥云县| 天祝| 太和县| 穆棱市| 遂平县| 台中县| 静乐县| 瑞丽市| 襄城县| 丰都县| 扬州市| 青岛市|