当前位置: 代码迷 >> Oracle开发 >> Oracle 包(Package)全局变量纳闷
  详细解决方案

Oracle 包(Package)全局变量纳闷

热度:25   发布时间:2016-04-24 06:39:31.0
Oracle 包(Package)全局变量疑惑
Oracle 包中定义了一个全局变量,两个过程,如下:

CREATE OR REPLACE PACKAGE PKG_TEMP IS
  V_COUNT NUMBER;
  PROCEDURE PRO_TEMP;
  PROCEDURE PRO_TEMP_II;
END PKG_TEMP;

两个过程中都用到了V_COUNT变量,如果两个过程并发时,V_COUNT变量值会不会互串啊?
------解决方案--------------------
引用:
Quote: 引用:

Quote: 引用:

Oracle 包中定义了一个全局变量,两个过程,如下:

CREATE OR REPLACE PACKAGE PKG_TEMP IS
  V_COUNT NUMBER;
  PROCEDURE PRO_TEMP;
  PROCEDURE PRO_TEMP_II;
END PKG_TEMP;

两个过程中都用到了V_COUNT变量,如果两个过程并发时,V_COUNT变量值会不会互串啊?

全局变量,整个包内都可调用,还可以被其他包调用

你的意思是两个过程并发时,V_COUNT的值会互串?

可以啊,
如下:

create or replace package test is
  a number;
  procedure a1;
  procedure a2;
end test;

create or replace package body test is

  procedure a1 is
  begin
    a := 1;
    dbms_output.put_line(a);
    a2;
    dbms_output.put_line(a);
  end;
  procedure a2 is
  begin
    a := 2;
    dbms_output.put_line(a);
    a1;
    dbms_output.put_line(a);
  end;
begin
  null;
end test;

你可以通过测试a1或者a2来看效果
  相关解决方案