程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Oracle數據庫 >> Oracle教程 >> 包的變量作用域測試說明,變量域測試

包的變量作用域測試說明,變量域測試

編輯:Oracle教程

包的變量作用域測試說明,變量域測試


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 

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved