博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Oracle数据库程序包全局变量的应用
阅读量:5363 次
发布时间:2019-06-15

本文共 1715 字,大约阅读时间需要 5 分钟。

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的全局变量只针对一个会话中有用,是不是这样???待验证。

转载于:https://www.cnblogs.com/zhwl/p/3715537.html

你可能感兴趣的文章
hdu 2203亲和串 (kmp)
查看>>
PHP 5 Directory 函数
查看>>
Thrift文件加载
查看>>
MySQL DATE_ADD() 函数
查看>>
c/s结构的自动化——pyautogui
查看>>
解决centOS7的IP为127.0.0.1,无法用Xshll链接问题
查看>>
vba
查看>>
vs2013常用快捷键收集
查看>>
网络编程之实现客户端与服务端聊天
查看>>
ADO.NET学习笔记(1)
查看>>
LTE的学习内容包含哪些方面呢?(zz)
查看>>
BLE控制器之链路层二
查看>>
编码反模式
查看>>
第六节 ADO.NET
查看>>
DataTable转CSV
查看>>
软件项目管理之--墨菲定理
查看>>
Codeforces Gym 100203I I - I WIN 网络流最大流
查看>>
Codeforces Beta Round #97 (Div. 1) B. Rectangle and Square 暴力
查看>>
cs331n 线性分类器损失函数与最优化
查看>>
UVA10106
查看>>