我在本地站点有一个包变量,我正在启动一个值,经过大量的处理,我调用一个执行一些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实例化本地会话中的所有包????
答案 0 :(得分:0)
在远程数据库中调用DML不会在本地会话
中实例化任何包变量本地变量在下面的代码
中的--do some processing
内重置
IF LOCAL_PKG.PKG_VARIABLE=1
THEN
-- do some processing
ELSE
-- do nothing
END IF;