Oracle数据库程序包全局变量的应用

Floria ·
更新时间:2024-11-15
· 905 次阅读

  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数据库 Oracle 变量

需要 登录 后方可回复, 如果你还没有账号请 注册新账号