[英]Execute sybase stored procedure as linked server procedure sql server 2008
EDIT 编辑
The final goal is to call a stored procedure hosted in sybase with input and output parameters from SQL Server 2008 via Linked Server 最终目标是通过Linked Server从SQL Server 2008中使用输入和输出参数调用sybase中托管的存储过程。
I think title is pretty clear. 我认为标题很清楚。
My goal is to execute a stored procedure hosted in Sybase SQL Anywhere 8 in SQL Server 2008 through the linked server I already created. 我的目标是通过已经创建的链接服务器执行SQL Server 2008中Sybase SQL Anywhere 8中托管的存储过程。
Any SQL query made through the linked server is working. 通过链接服务器进行的任何SQL查询都可以正常工作。 In addition I was able to execute a function but I don't now how to get the return value like that
另外,我能够执行一个函数,但是现在我不知道如何获得这样的返回值
EXEC ('CALL "dbname"."procedurename"(''param1'', ''param2'', ''param3'')') AT LinkedServerAlias;
Thanks 4 all your help! 谢谢4所有的帮助!
Mauro 毛罗
can you use four part naming convention? 可以使用四部分命名约定吗?
like 喜欢
exec LinkedServerName.dbname.dbo.procedurename @param1, @param2, @param3
I was finally able to do it by calling 我终于可以通过打电话来做到这一点
SELECT * FROM OPENQUERY([LinkedServer], 'SELECT "dbname"."spname"(@p1,@p2, @p3)')
I'll add comments and example as soon as I experiment it. 我将在尝试后立即添加评论和示例。
4 part object names are valid only for SQL Server linked servers. 4个部分对象名称仅对SQL Server链接服务器有效。
You have to have your EXEC inside an OPENQUERY 您必须将自己的EXEC放在OPENQUERY中
SELECT * FROM OPENQUERY([LinkedServer], 'EXEC MyDB.MyScheme.MyProc.spname @p1, @p2, @p3')
Now, you can't parametrise OPENQUERY calls so you have use dynamic SQL 现在,您无法参数化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)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.