修改
最终目标是通过链接服务器调用SQL Server 2008中输入和输出参数的sybase中托管的存储过程
我认为标题很清楚。
我的目标是通过我已创建的链接服务器执行SQL Server 2008中Sybase SQL Anywhere 8中托管的存储过程。
通过链接服务器进行的任何SQL查询都有效。 另外我能够执行一个函数,但我现在不知道如何获得返回值
EXEC ('CALL "dbname"."procedurename"(''param1'', ''param2'', ''param3'')') AT LinkedServerAlias;
谢谢你的帮助!
莫罗
答案 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)