首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

Oracle Developer/2000 開發六大實戰技巧:權限控制、查詢優化、庫模塊、視圖報表與序號生成

     編輯:Oracle 資料庫相關知識

技巧一:菜單/數據項屬性實現角色權限控制

-- 登錄驗證後設置全局變量 :GLOBAL.USER_ROLE
IF :GLOBAL.USER_ROLE = 'READ_ONLY' THEN
  SET_MENU_PROPERTY('MENU_SALARY', ENABLED, PROPERTY_FALSE);
  SET_ITEM_PROPERTY('SALARY_ITEM', ENABLED, PROPERTY_FALSE);
  SET_ITEM_PROPERTY('SALARY_ITEM', UPDATE_ALLOWED, PROPERTY_FALSE);
END IF;

通過禁用菜單項、設置數據項 UPDATE_ALLOWED=FALSE 實現細粒度只讀控制。

技巧二:外連接替代 NOT IN 提速 48 倍

原查詢 (4 分鐘):

SELECT RECORDNO, NAME, AGE
FROM Table1
WHERE Table1.RECORDNO NOT IN (SELECT RECORDNO FROM Table2 WHERE BIRTHDAY='710618');

優化後 (50 秒):

SELECT Table1.RECORDNO, Table1.NAME, Table1.AGE
FROM Table1, Table2
WHERE Table1.RECORDNO = Table2.RECORDNO(+)
  AND Table2.RECORDNO IS NULL
  AND Table2.BIRTHDAY(+) = '710618';

原理:NOT IN 觸發全表掃描 + 子查詢逐行過濾;外連接 + IS NULL 利用索引嵌套循環,邏輯等價但執行計劃優化。

技巧三:庫模塊共享程序單元

  1. File → New → Library 創建 .pll 文件。
  2. Program Units 節點下新建共享過程/函數/包。
  3. Form 模塊 Attached Libraries 節點附加該庫(提示刪除路徑選 No 保留相對路徑)。
  4. Form 中直接調用庫內程序單元,修改庫即時生效所有關聯 Form。

技巧四:NULL 與 UNION 易導致的錯誤

  • WHERE col LIKE '%' 不匹配 NULL,需 OR col IS NULL。
  • UNION 預設按第一列排序,非按編寫順序。需在各子查詢第一列加排序序號:SELECT 1 AS seq, ... UNION SELECT 2, ...。

技巧五:視圖預聚合簡化報表開發

CREATE VIEW RYTJ (UNIT, BOY, GIRL) AS
SELECT UNIT,
       SUM(DECODE(SEX,'男',1,0)),
       SUM(DECODE(SEX,'女',1,0))
FROM Table1
GROUP BY UNIT;

報表直接基於視圖 RYTJ 設計,數據源變更只改視圖,前端報表零修改。

技巧六:公式列自動生成報表序號

Data Model → 查詢組 → 新增公式列 CF_XH (NUMBER) → 初值 0 → 編輯公式:RETURN(:CF_XH + 1)。報表運行時自動遞增顯示 1,2,3…

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved