包的变量作用域测试说明
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0
1. 包中作用域种类说明以及声明位置
a. publish、private、locavariable 三种类型,当然每种类型包括了变量、函数、类型等。
b. publish类声明在非包体中(不带body的)
private类声明在包体中
locavariable类声明在包中函数、过程对象里面的
2. 作用域说明
a. publish类,包外可以使用,可以进行取值、赋值操作,每次使用本变量时,包体中的begin-end模块会被初始化,同时此类变量生存周期是会话的生存周期,当包被重新编译,此变量将被重新初始化,否则只初始化一次。
b. private类,包外不可以使用,作用域限定待包体中(带body的),生存周期是会话周期,周期内只被初始化一次,当包被重新编译,此变量将被重新初始化
c. locavariable类变量,作用域是在函数、过程等对象用,与一般函数变量声明一致。
4. 注意:
包中的begin-end模块,在每次调用包的时候都需要进行初始化运行。
3. 测试demo
创建测试包
create or replace package testpkg is -- Author : ZHENGZY -- Created : 2013/5/21 9:57:02 -- Purpose : 测试包的特性 -- Public constant declarations Cons_Varchar constant varchar2(100) := 'TestPkg'; -- Public variable declarations V_GlobVarchar varchar2(1000) := '1000'; V_Globinteger INTEGER; -- Public function and procedure declarations function fc_IncNumAndConnStr return varchar2; end testpkg; create or replace package body testpkg is -- Private constant declarations Cons_Varchar2 constant varchar2(100) := 'TestPkgPrivate'; -- Private variable declarations V_GlobVarchar2 varchar2(1000); V_Globinteger2 INTEGER; -- Function and procedure implementations function fc_IncNumAndConnStr return varchar2 is V_Result varchar2(2000); begin V_globvarchar := V_globvarchar ||' HELLO'; V_globinteger := NVL(v_globinteger,0) + 1; V_Globinteger2 := nvl(V_Globinteger2,0) + 1; V_Result :='V_Globvarchar=' ||V_Globvarchar||to_char(v_globinteger) || chr(13) || 'V_globVarchar2=' ||V_globVarchar2 ||chr(13)|| 'V_globVarchar3='||to_char(V_Globinteger2); return(V_Result); end; begin V_globVarchar2 := V_globVarchar2||'body ini.'; end testpkg;
create or replace package testpkg2 is -- Created : 2013/5/21 10:18:46 -- Purpose : 测试公共变量 -- Public function and procedure declarations function fc_setvaluetovar return varchar2; end testpkg2; create or replace package body testpkg2 is function fc_setvaluetovar return varchar2 is result varchar2(200); begin testpkg.V_GlobVarchar := testpkg.V_GlobVarchar|| 'hello'; result := testpkg.V_GlobVarchar; return(Result); end; begin null; end testpkg2;
执行语句:
SELECT TESTPKG.FC_INCNUMANDCONNSTR FROM DUAL; SELECT TESTPKG2.FC_SETVALUETOVAR FROM DUAL;
首次执行结果:
V_Globvarchar=1000 HELLO1 V_globVarchar2=body ini. V_globVarchar3=1 -- 1000 HELLOhello
第二次结果:
V_Globvarchar=1000 HELLOhello HELLO2 V_globVarchar2=body ini. V_globVarchar3=2
1000 HELLOhello HELLOhello
转载于:https://www.cnblogs.com/wildfox/p/5791217.html
包的变量作用域测试说明相关推荐
- Go 学习笔记(6)— 变量定义、变量声明、变量作用域
1. 变量定义 Go 语言变量名由字母.数字.下划线组成,其中首个字符不能为数字.声明变量的一般形式是使用 var 关键字: var varName dataType [= value] Go 语言和 ...
- 关于变量作用域的一点整理
案例一: 1 var x=100; 2 alert(x); 3 //等同于 4 window.x=100; 5 window.alert(x); 理解:定义的全局变量都是window对象的属性,而一些 ...
- go语言复数包_go语言学习之包和变量详解
前言 本文主要介绍了关于go语言之包和变量的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧. 一.包的概念 包是go语言中不可缺少部分,在每个go源码的第一行进行定义,定义方 ...
- python中的变量的作用_Python中的变量作用域
python中变量作用域包括: L (Local) 局部作用域,函数内部声明但没有使用global的变量 E (Enclosing) 闭包函数外的函数中,def或者lambda的本地作用域 G (Gl ...
- 微课|中学生可以这样学Python(6.3节):变量作用域
适用教材: 董付国,应根球.<中学生可以这样学Python>.清华大学出版社,2017. 第6章 函数 6.3 变量作用域 京东购买链接:https://item.jd.com/122 ...
- 当Python的lambda表达式遇上变量作用域
----------相关阅读---------- 1900页Python系列PPT分享一:基础知识(106页) 1900页Python系列PPT分享二:Python序列(列表.元组.字典.集合)(15 ...
- 函数二的变量作用域,多函数执行,返回值,函数参数,拆包,引用
函数二 一.变量作用域 1.局部变量是函数内部变量,在函数临时保存数据,函数调用完则销毁,在函数外访问即报错 2.全局变量函数内外都可访问,当不同函数都要用到某一变量时,则可使用全局变量 def fu ...
- 【JavaScript 笔记】— 函数高级(变量作用域、解构赋值、方法、高阶函数、闭包、箭头函数、generator)
JavaScript个人笔记 变量作用域 变量提升 全局对象 windows 命名空间 局部作用域 常量 解构赋值 使用场景 方法 apply 装饰器 高阶函数(Array) map reduce m ...
- Python 变量作用域与函数(4)
Python 的创始人为吉多·范罗苏姆(Guido van Rossum).1989年的圣诞节期间,吉多·范罗苏姆为了在阿姆斯特丹打发时间,决心开发一个新的脚本解释程序,作为ABC语言的一种继承.Py ...
- 【PHP自学笔记】变量的命名规则和变量作用域
最近快结课了,也没啥考试,主要是在面试和准备面试,想着剩余时间自学点PHP. 主要参考的是菜鸟教程.w3school 命名规则 以$开头,$号后面是变量名,变量名区分大小写: 变量名开头必须是字母或者 ...
最新文章
- java flex 图片上传_flex上传图片到java服务器
- linqtoxml读写xml
- 【原创】STM32工程新建步骤
- 设计师值得学习的分类网站
- java 自己写一个模板_写一个java生成模板
- 科技范足 多家上市川企获省科技进步奖
- Mutex对象是操作系统级?
- 小米一键上锁工具_小米手机通用解锁教程
- 备份路由器配置文件到服务器,手把手教您如何进行备份Cisco路由器配置
- multus-cni之源码解析
- happen-before讲解
- Android开发——网络请求(一)网络请求的API、授权和方法
- java 求次方_Java递归例子——求x的y幂次方
- 玩转「Wi-Fi」系列之wpa_supplicant 介绍(七)
- 基于Vue+Express+Mysql开发的手机端电影购票系统(附源码)
- 如何解决飞思卡尔芯片使用监控程序产生的冲突问题
- 店宝宝:第一时间发布!网店店主必看
- linux系统服务器忘记密码怎么办
- 产品管理精华:第三,需求调研,从用户出发
- c语言编程ABABCBABC,上海海事大学C语言程序设计练习题全题库
热门文章
- 动手写一个探测网络质量(丢包率/RTT/队形等)的工具
- KGB知识图谱深入挖掘金融行业的知识关联
- 多元思维模型——全学科及其核心思维模型
- selenium结合sikuliX操作Flash网页
- 深度解析:印度软件产业为何如此发达
- Kinect体感游戏开发思考
- lstm优点缺点_LSTM和易失性时间序列:优点和缺点
- 以预测股票涨跌案例入门基于SVM的机器学习
- 论初唐诗人的历史地位-上官仪、王勃、杨炯、陈子昂、杜审言
- 计算机公式算加减乘除教程视频,Excel快速计算加减乘除教程 Excel表格公式计算方法...