Oracle資料庫程式包全域性變數的應用

2021-09-06 15:29:24 字數 1958 閱讀 5512

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; 

******************** 

聽說:package的全域性變數只針對乙個會話中有用,是不是這樣???待驗證。

Oracle資料庫程式包全域性變數的應用

1 前言 在程式實現過程中,經常用遇到一些全域性變數或常數。在程式開發過程中,往往會將該變數或常數儲存於臨時表或前台程式的全域性變數中,由此帶來執行效率降低 頻繁讀取臨時表 或安全隱患 存於前台程式變數,可跟蹤記憶體變數獲得 本文主要論述將全域性變數或常數訪問程式包的優點和實現方法。2 優點 2.1...

Oracle資料庫中的程式包練習

1.在乙個包中定義兩個過載的方法,兩個方法作用都是求乙個數到另乙個數的和並將和返回,方法申明如下 包頭 create orreplace package pack1 asfunction getsum endnumber int return int function getsum endnumbe...

oracle中的程式包

一 程式包的基本概念 程式包可將若干函式或者儲存過程組織起來,作為乙個物件進行儲存。程式包通常由兩部分構成,規範 specification 和主體 body 程式報也可以包含常量和變數,包中的所有函式和儲存過程都可以使用這些變數或者常量。二 規範 1 建立規範 sql視窗 create or re...