sql-server - 从 Sql Server 2008 执行 Oracle 存储过程

标签 sql-server oracle tsql stored-procedures linked-server

我正在尝试通过 DB LINK 从 SQL Server 2008 R8 执行 Oracle 存储过程, 存储过程的 header 如下所示:

PROCEDURE TEST(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;

执行存储过程是因为我可以看到表“MYTABLE”已更新,但问题是我收到错误:

Msg 7215, Niveau 17, État 1, Ligne 10
Impossible d'exécuter l'instruction sur le serveur distant 'DB_ORACLE'.

翻译过来

Cannot execute the instruction at the distant server 'DB_ORACLE'

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

感谢您的帮助

最佳答案

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

exec ('开始 sproc_name; end;') 在 linked_server_name

使用变量调用过程

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

这对我来说效果很好 使用

关于sql-server - 从 Sql Server 2008 执行 Oracle 存储过程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30798532/

相关文章:

sql - 允许较新的 SQL 语法优雅地回退到旧版本?

SQL - 存在还是全部?

sql - 连接可能包含空值的人名的最短 TSQL 是什么

sql - 查找错误 ORA-00932 : inconsistent datatypes: expected DATE got NUMBER

甲骨文创建功能

date - 从 T-SQL 中的日期获取周数

sql - 在 SELECT 语句中使用 'previous' 列的结果

sql-server - 将 Windows 8.1 升级到 Windows 10 后 SQL Server 不工作

sql - 根据第三个表中的列值删除表中的行

mysql - SQL 未按预期工作