博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
包的变量作用域测试说明
阅读量:5342 次
发布时间:2019-06-15

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

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

你可能感兴趣的文章
一个控制台程序,模拟机器人对话
查看>>
web.xml 中加载顺序
查看>>
pycharm激活地址
查看>>
hdu 1207 四柱汉诺塔
查看>>
Vue 2.x + Webpack 3.x + Nodejs 多页面项目框架(上篇——纯前端多页面)
查看>>
display:none与visible:hidden的区别
查看>>
我的PHP学习之路
查看>>
【题解】luogu p2340 奶牛会展
查看>>
对PostgreSQL的 SPI_prepare 的理解。
查看>>
解决响应式布局下兼容性的问题
查看>>
京东静态网页练习记录
查看>>
使用DBCP连接池对连接进行管理
查看>>
【洛谷】【堆+模拟】P2278 操作系统
查看>>
hdu3307 欧拉函数
查看>>
Spring Bean InitializingBean和DisposableBean实例
查看>>
Solr4.8.0源码分析(5)之查询流程分析总述
查看>>
[Windows Server]安装系统显示“缺少计算机所需的介质驱动程序”解决方案
查看>>
[容斥][dp][快速幂] Jzoj P5862 孤独
查看>>
Lucene 学习之二:数值类型的索引和范围查询分析
查看>>
软件开发工作模型
查看>>