从Sql Server 2008执行oracle存储过程

ami*_*dev 5 t-sql sql-server oracle stored-procedures linked-server

我试图通过DB LINK从SQL Server 2008 R8执行oracle存储过程,存储过程的标题如下所示:

程序测试(X OUT NOCOPY VARCHAR2,Y OUT NOCOPY NUMBER,Z IN NUMBER)

此过程将更新表"MYTABLE"并返回结果

我的T-SQL是:

           DECLARE @X nvarchar(255)              
           DECLARE @Y INTEGER   
           DECLARE @Z INTEGER


           SET @X= ''
           SET @Y = 0
           SET @Z = 2

           EXEC('begin USER.PKG.TEST(?,?,?); end;',@X OUTPUT, @Y OUTPUT,@Z ) AT DB_ORACLE;
Run Code Online (Sandbox Code Playgroud)

执行存储过程是因为我可以看到表"MYTABLE"已更新,但问题是我得到一个错误:

Msg 7215, Niveau 17, État 1, Ligne 10
Impossible d'exécuter l'instruction sur le serveur distant 'DB_ORACLE'.
Run Code Online (Sandbox Code Playgroud)

转化为

Cannot execute the instruction at the distant server 'DB_ORACLE'
Run Code Online (Sandbox Code Playgroud)

注意:启用Rpc,Rpc Out和Use Remote Collat​​ion的参数

感谢帮助

小智 0

用于从 SQL Server 进行简单的 Oracle 过程调用

exec ('开始 sproc_name; 结束;') at linked_server_name

使用变量调用过程

<B>declare @z int<B>
<B>set @z = 10 <B>
exec ('begin sproc_name(''' + @z + '''); end;') at 
linked_server_name;
Run Code Online (Sandbox Code Playgroud)

这对我来说效果很好