从SQL Server存储过程执行Oracle存储过程

时间:2011-08-31 19:11:46

标签: sql-server oracle stored-procedures

我有一个SQL Server存储过程需要将信息发送到Oracle存储过程。

如何设置?它应该是链接服务器吗?如何编写代码来传递和执行存储过程?

4 个答案:

答案 0 :(得分:3)

你也可以使用:

DECLARE @outputParameter int
EXEC ('BEGIN <procedureName>(?,?); END;', @inputParameter , @outputParameter OUTPUT) at <linkedServerName>

这允许捕获输出参数

答案 1 :(得分:3)

程序&#34; TestingProcedure&#34;在Oracle服务器中。

链接服务器&#34; LinkedServer&#34;在SQL Server中。

在SQL server示例中调用TestingProcedure:

EXECUTE ('begin TestingProcedure; end;') AT LinkedServer;

答案 2 :(得分:2)

这是我可能从一开始就尝试的语法:

SELECT * FROM OPENQUERY(<linked server name>, '{CALL <oracle sp>}')

我所看到的(我自己没有尝试过)是你也可以使用OPENQUERY调用Oracle函数然后可以调用存储过程,或者你可以将存储过程转换为函数。您从SQL Server的连接看起来像这样:

SELECT * FROM OPENQUERY(<linked server name>, 'SELECT <oracle function> FROM dual')

答案 3 :(得分:1)

结果我最终不得不使用Microsofts CLR并编写我自己的小C#应用程序来处理服务器之间推送的变量。这是我做的:

  1. C#应用程序从Windows
  2. 中的计划任务开始
  3. 应用程序执行SQL Server存储过程并获取返回值
  4. 然后,应用程序使用适当的值执行Oracle存储过程