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数据库程序包全局变量的应用
时间: 2024-10-14 14:00:19
Oracle数据库程序包全局变量的应用的相关文章
ORACLE的程序包不该忽视的东西
1.程序包就相当于JAVA中的类 2.程序包效率高的原因是:当程序首次调用包内函数或过程时,ORACLE将整个包调入内存,当再次访问包内元素时,ORACLE直接从内存中读取,而不需要进行磁盘I/O操作,从而使程序执行效率得到提高. 3.包有两部分组成 (1).包说明(规范)(PACKAGE SPECIFICATION):包说明部分声明包内数据类型.变量.常量.游标.子程序和异常错误处理等元素,这些元素为包的公有元素. (2).包体(PACKAGE BODY):包主体则是包定义部分的具体实现,它定
Oracle基础 程序包
一.程序包 程序包是一种数据库对象,它是对相关PLSQL类型.子程序.游标.异常.变量和常量的封装.程序包包含两部分内容: 1.程序包规范:可以声明类型.变量.常量.异常.游标和子程序. 2.程序包主题:可以实现在程序包规范中定义的游标.子程序. 二.程序包规范 程序包规范包含一些应用程序课件的公共对象和类型的声明它是应用程序的借口.规范包含应用程序所需的资源,如果程序包规范只声明类型.常量.变量和异常,则不需要有程序包主体.只有子程序和游标才具有程序包主体. 语法: create [or re
ORACLE的程序包1-程序包的基础
程序包简析 oracle中的程序包简析 一 程序包的基本概念 程序包可将若干函数或者存储过程组织起来,作为一个对象进行存储.程序包通常由两部分构成,规范(specification)和主体(body). 程序包也可以包含常量和变量,包中的所有函数和存储过程都可以使用这些变量或者常量. 程序包是对相关过程.函数.变量.游标和异常等对象的封装 程序包由规范和主体两部分组成 二 规范 1 创建规范(SQL窗口) create or replace package pkg_
pom.xml中添加oracle数据库驱动包报错: Missing artifact com.oracle:ojdbc14:jar:10.2.0.4.0
pom.xml 加载jar包时报错:Missing artifact com.oracle:ojdbc14:jar:10.2.0.4.0. 由于oracle的ojdbc收费,所以在maven项目导入时没有ojdbc14-10.2.0.4.0.jar包. 解决方法: 配置本地库.下载jar包,把jar包放在仓库对应的文件夹ojdbc14\10.2.0.4.0\里,安装到本地仓库(需要事先配过maven的环境变量),在命令行工具中写如下命令,注意本地仓库位置一定要写对: mvn install:in
[强烈推荐]ORACLE PL/SQL编程详解之七:程序包的创建与应用(聪明在于学习,天才在于积累!)
原文:[强烈推荐]ORACLE PL/SQL编程详解之七:程序包的创建与应用(聪明在于学习,天才在于积累!) [强烈推荐]ORACLE PL/SQL编程详解之七: 程序包的创建与应用(聪明在于学习,天才在于积累!) ——通过知识共享树立个人品牌. 继上七篇: [推荐]ORACLE PL/SQL编程详解之一:PL/SQL 程序设计简介(千里之行,始于足下) [顶]ORACLE PL/SQL编程详解之二:PL/SQL块结构和组成元素(为山九仞,岂一日之
Oracle数据库之开发PL/SQL子程序和包
Oracle数据库之开发PL/SQL子程序和包 PL/SQL块分为匿名块与命名块,命名块又包含子程序.包和触发器. 过程和函数统称为PL/SQL子程序,我们可以将商业逻辑.企业规则写成过程或函数保存到数据库中,以便共享. 过程和函数均存储在数据库中,并通过参数与其调用者交换信息.过程和函数的唯一区别是函数总向调用者返回数据,而过程不返回数据. 1. 存储过程概念 存储过程(Stored Procedure)是在大型数据库系统中,一组为了完成特定功能的SQL语句集,存储在数据库中.经过第一次编译后
java程序通过jdbc连接oracle数据库方法
1. 赋予scott用户连接权限:Grant connect to scott: 2. 在Myeclipse中新建java项目导入jdbc包(classes12.jar): 右键项目 bulid path -〉add external archives 选择classes12.jar 3. 新建java文件, lianxi01.java import java.sql.Connection; import java.sql.ResultSet; import java.s
Oracle学习笔记十二 子程序(存储过程、自定函数)和程序包
子程序 子程序:命名的 PL/SQL 块,编译并存储在数据库中. 子程序的各个部分: 1.声明部分 2.可执行部分 3.异常处理部分(可选) 子程序的分类: 1.过程 - 执行某些操作 2.函数 - 执行操作并返回值 子程序的优点: 模块化 将程序分解为逻辑模块 可重用性 可以被任意数目的程序调用 可维护性 简化维护操作 安全性 通过设置权限,使数据更安全 存储过程 过程是用于完成特定任务的子程序. 例如: 一个购票过程可以分为很多个子过程,分别完成. 创建存储过程 创建过程的语法: CREAT
使用ADO连接oracle数据库“未找到提供程序。该程序可能未正确安装”解决方案
问题描述:VS2010开发的C++程序,在一台Win7旗舰版的已安装Oracle客户端的PC上连接不上Oracle,提示"未找到提供程序.该程序可能未正确安装",其他语言编写的程序比如C#是可以成功连接Oracle的: 解决办法:首先是找谷歌度娘帮忙,找了几篇文章,都说是没有Oracle的Oledb驱动,去安装目录XXXX\bin下还真没找到OraOLEDB*.dll,然后按照文章帮助将OraOLEDB10.dll文件拷贝至有问题的Win7上,在DOS下开始注册,这时却提示"