數據庫程序包全局變量的應用
2024-07-21 02:37:56
供稿:網友
 
             
  1 前言 
  在程序實現過程中,經常用碰到一些全局變量或常數。在程序開發過程中,往往會將該變量或常數存儲于臨時表或前臺程序的全局變量中,由此帶來運行效率降低<頻繁讀取臨時表>或安全隱患<存于前臺程序變量,可跟蹤內存變量獲得>。 
                                                                                              本文主要論述將全局變量或常數存取程序包的優點和實現方法。 
  
  2 優點 
  2.1 執行效率比存儲于臨時表高,不需要頻率存取臨時表 
  2.2 將全局變量藏于最后防線<數據庫>,安全性較高 
  2.3 在視圖中可以調用程序包的變量,實現動態視圖 
  
  3 實現 
  3.1 實現方法概述 
  Oracle數據庫程序包中的變量,在本程序包中可以直接引用,但是在程序包之外,則不可以直接引用。對程序包變量的存取,可以為每個變量配套相應的存儲過程<用于存儲數據>和函數<用于讀取數據>來實現。 
  
  3.2 實例 
  --定義程序包 
  create or replace package PKG_System_Constant is 
  
    C_SystemTitle nVarChar2(100):='測試全局程序變量'; --定義常數 
    --獲取常數<系統標題> 
    Function FN_GetSystemTitle 
     Return nVarChar2; 
  
    G_CurrentDate Date:=SysDate; --定義全局變量 
    --獲取全局變量<當前日期> 
    Function FN_GetCurrentDate 
     Return Date; 
    --設置全局變量<當前日期> 
    PRocedure SP_SetCurrentDate 
     (P_CurrentDate In Date); 
  End PKG_System_Constant; 
  / 
  create or replace package body PKG_System_Constant is 
    --獲取常數<系統標題> 
    Function FN_GetSystemTitle 
     Return nVarChar2 
     Is 
     Begin 
       Return C_SystemTitle; 
     End FN_GetSystemTitle; 
  
    --獲取全局變量<當前日期> 
    Function FN_GetCurrentDate 
     Return Date 
     Is 
     Begin 
       Return G_CurrentDate; 
     End FN_GetCurrentDate; 
    --設置全局變量<當前日期> 
    Procedure SP_SetCurrentDate 
     (P_CurrentDate In Date) 
     Is 
     Begin 
       G_CurrentDate:=P_CurrentDate; 
     End SP_SetCurrentDate; 
  End PKG_System_Constant; 
  / 
    
  3.3 測試 
  --測試讀取常數 
  Select PKG_System_Constant.FN_GetSystemTitle From Dual;    
  --測試設置全局變量 
  Declare 
  Begin 
    PKG_System_Constant.SP_SetCurrentDate(To_Date('2001.01.01','yyyy.mm.dd')); 
  End; 
  / 
  --測試讀取全局變量 
  Select PKG_System_Constant.FN_GetCurrentDate From Dual;