执行sybase存储过程作为链接服务器过程sql server 2008

时间:2011-02-22 16:22:46

标签: sql sql-server tsql linked-server sybase-asa

修改


最终目标是通过链接服务器调用SQL Server 2008中输入和输出参数的sybase中托管的存储过程


我认为标题很清楚。

我的目标是通过我已创建的链接服务器执行SQL Server 2008中Sybase SQL Anywhere 8中托管的存储过程。

通过链接服务器进行的任何SQL查询都有效。 另外我能够执行一个函数,但我现在不知道如何获得返回值

EXEC ('CALL "dbname"."procedurename"(''param1'', ''param2'', ''param3'')') AT LinkedServerAlias;

谢谢你的帮助!

莫罗

3 个答案:

答案 0 :(得分:1)

你能使用四部分命名约定吗?

exec LinkedServerName.dbname.dbo.procedurename @param1, @param2, @param3

答案 1 :(得分:0)

我终于可以通过调用

来做到这一点
SELECT * FROM OPENQUERY([LinkedServer], 'SELECT "dbname"."spname"(@p1,@p2, @p3)')

我会在实验后立即添加评论和示例。

答案 2 :(得分:0)

4个部分对象名称仅对SQL Server链接服务器有效。

你必须将你的EXEC放在一个OPENQUERY

SELECT * FROM OPENQUERY([LinkedServer], 'EXEC MyDB.MyScheme.MyProc.spname @p1, @p2, @p3')

现在,您无法参数化OPENQUERY调用,因此您已使用动态SQL

DECLARE @sql nvarchar(4000), @linkedsql nvarchar(4000)

SET @sql = 'EXEC MyDB.MyScheme.MyProc.spname ' + CAST(@p1value as int) + ...
SET @linkedsql = 'SELECT * FROM OPENQUERY(LinkedServer, ''' + @sql + ''')'

EXEC (@linkedsql)