代码之家  ›  专栏  ›  技术社区  ›  psaraj12

在远程DB中执行DML是否会取消本地DB中所有包的实例化

  •  1
  • psaraj12  · 技术社区  · 10 年前

    我在本地站点中有一个包变量,我正在初始化一个值,经过大量处理后,我调用了一个远程db过程,该过程执行一些DML。我可以发现,依赖于我初始化的包变量的处理不起作用。但如果我不调用远程db过程的话,同样的处理也会起作用

    本地和远程数据库都是oracle

    例如,在本地会话中

    CREATE OR REPLACE PACKAGE LOCAL_PKG
    AS
    PKG_VARIABLE NUMBER(1):=0;
    --other local statements
    END;
    

    现在我在本地过程中将此变量的值设置为不同的值

    LOCAL_PKG.PKG_VARIABLE:=1;
    

    然后我调用远程程序

    IF NOT REMOTE_PROC@REMOTEDB THEN-- this performs DML in remote database
     --some local statements 
    END IF;
    -- other local statments
    
    -- other local processing
    

    现在在本地数据库中,我检查了这个条件,然后进行了一些处理

    IF LOCAL_PKG.PKG_VARIABLE=1
    THEN
    -- do some processing 
    ELSE
    -- do nothing
    END IF;
    

    所以我的问题是,在远程数据库中调用DML是否会取消本地会话中所有包的实例化????

    1 回复  |  直到 10 年前
        1
  •  0
  •   psaraj12    7 年前

    在远程数据库中调用DML不会取消实例化本地会话中的任何包变量

    本地变量在内部重置 --do some processing 在下面的代码中

    IF LOCAL_PKG.PKG_VARIABLE=1
    THEN
    -- do some processing 
    ELSE
    -- do nothing
    END IF;