ORACLE Developer/2000 編程技巧六則

來源:互聯網
上載者:User

---- ORACLE 作為大型資料庫管理系統,它強大而完善的資料管理功能吸引著越來越多的人們的注意。本人在oracle 系統開發中,就developer/2000編程有如下體會,希望能給初學者提供一些參考。

---- 一、使用設定功能表項目屬性及form 資料項目屬性限制不同使用者的存取範圍

---- 一個應用系統往往有不同的使用者,比如: 一個勞資系統中,一個使用者負責管理職工基本檔案部分,另一個使用者負責管理職工工資部分,管理職工基本檔案的使用者對職工檔案只有查詢的許可權而不能有修改的許可權。實現上述功能的一個簡單的實現辦法是:

---- 設定兩個全域變數分別記錄使用者名稱和密碼,在進入系統時,兩個使用者分別輸入不同的使用者名稱和密碼,判斷使用者名稱,使SET_MENU_PROPERTY(MENU1,ENABLED,FALSE)語句設定沒有查詢許可權的使用者不能訪問功能表項目’MENU1’。

---- 二、提高表串連的查詢速度

---- 在表串連查詢時,常常用下列查詢方法查詢資料是:

SELECT RECORDNO,NAME,AGE

FROM 表1

WHERE 表1.RECORDNO NOT IN

(SELECT RECORDNO

FROM 表2

WHERE BIRTHDAY=’710618’);

---- 筆者發現,如果表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’;

---- 三、利用用庫模組實現模組資源共用

---- 在編程中很多FROM 模組需要共用一個程式單元。ORACLE FORM 4.5提出了庫模組的概念。使用庫模組建立共用程式單元庫,既減少了磁碟佔用空間,又增加程式的可維護性。使用庫模組共用程式單元的過程是:點擊系統功能表的file-new-liberary選項,建立一庫模組,在program units節點下增加一程式單元, 寫入需共用程式的單元編碼, 編譯後存檔。當FORM模組需共用時,在模組的Attached Libraries節點下串連庫模組(此時螢幕會提示是否要刪除路徑,使用者選擇NO)。這樣,使用者便可在FORM模組中直接使用共用程式單元了。

---- 四、易導致查詢資料錯誤的原因

---- 在執行資料查詢時,經常發現查詢結果與預想的不同,主要原因是:

---- 1.使用 SELECT * FROM <表名> WHERE <欄位名> LIKE ’%’ 語句查詢不出 <欄位名>為NULL的欄位。此時需對欄位為NULL的情況另外處理。如:SELECT * FROM <表名> WHERE <欄位名> LIKE ’%’ OR <欄位名> IS NULL

---- 2.使用union 欄位串連各表時,串連順序不是按書寫的先後順序,而是按串連表的第一個欄位排序。因此,為了使表按預想的順序串連,需在各表中插入第一欄位指定排序序號。


 

---- 五、使用視圖組織報表資料簡單且易於維護

---- ORACLE REPORT2.5提供了多種報表格式,但在報表中定義各種統計資訊不僅繁瑣而且不利於今後的維護,使用視圖預先將各種統計、摘要資料準備好,可以起到事半功倍的作用,一旦資料來源有所調整,只需修改後台視圖,而不用再改前端程式了。

表1結構為: UNIT NAME RECORENO SEX

辦公室 王五 1 男

財務科 李四 2 女

.. .. .. ..

---- 1. 首先建立視圖對資料進行匯總:

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 沒有提供加序號功能,使用下述簡單方法可實現給報表自動加序號:在資料範本中, 向查詢組中加入一個公式列 CF_XH NUMBER(4), 賦初值為0, 點擊[EDIT] 按鈕, 插入編碼RETURN(:CF_CH+1)。



聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.