包的变量作用域测试说明
来源:互联网 发布:金道环球投资 知乎 编辑:程序博客网 时间:2024/06/02 10:40
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类变量,作用域是在函数、过程等对象用,与一般函数变量声明一致。
第二次结果:
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 HELLO1V_globVarchar2=body ini.V_globVarchar3=1--1000 HELLOhello
第二次结果:
V_Globvarchar=1000 HELLOhello HELLO2V_globVarchar2=body ini.V_globVarchar3=2
1000 HELLOhello HELLOhello
- 包的变量作用域测试说明
- 变量的作用域--js闭包
- js变量的作用域测试
- 关于php include变量作用域的说明
- FreeMarker变量作用域测试
- PHP变量作用域测试
- 关于闭包和变量的作用域的问题
- JavaSript中变量的作用域 闭包的理解
- 生命周期,作用域的定义;说明全局变量、静态变量、局部变量、const变量的生命周期、作用域
- JavaScript 的变量作用域及闭包
- JavaScript的变量作用域及闭包总结
- js变量的声明、作用域以及闭包
- JavaScript的变量作用域和闭包操作
- python的闭包与变量作用域
- JavaScript的变量作用域和闭包操作
- JavaScript 变量作用域及闭包
- python变量及其作用域,闭包
- JavaScript闭包作用域变量问题
- ole excel操作
- 在线文档显示组件 FlexPaper
- Linux重设root密码
- linux进程知识
- java操作poi导出Excel2
- 包的变量作用域测试说明
- Spring声明式事务配置管理方法
- 获取线程状态
- ZOJ 2777 Visible Lattice Points
- android退出
- vi命令
- 各种正则表达式
- File input 浏览上传按钮样式和文字的更改方法
- 《大话数据结构》之算法笔记