在远程数据库中执行DML是否实例化本地数据库中的所有包

时间:2015-02-11 12:16:59

标签: oracle distributed dml

我在本地站点有一个包变量,我正在启动一个值,经过大量的处理,我调用一个执行一些DML的远程数据库程序。我可以找到依赖于我初始化的包变量的处理不起作用。但如果我不调用远程数据库程序

,则相同的处理工作正常

本地和远程数据库都是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 个答案:

答案 0 :(得分:0)

在远程数据库中调用DML不会在本地会话

中实例化任何包变量

本地变量在下面的代码

中的--do some processing内重置
IF LOCAL_PKG.PKG_VARIABLE=1
THEN
-- do some processing 
ELSE
-- do nothing
END IF;