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

发布于 2024-10-19 04:58:43 字数 422 浏览 4 评论 0原文

编辑


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


我认为标题非常清楚。

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

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

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

谢谢4你的帮助!

毛罗

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


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.

Any SQL query made through the linked server is working.
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!

Mauro

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

故人如初 2024-10-26 04:58:43

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

喜欢

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

can you use four part naming convention?

like

exec LinkedServerName.dbname.dbo.procedurename @param1, @param2, @param3
我一直都在从未离去 2024-10-26 04:58:43

我终于能够通过调用“

SELECT * FROM OPENQUERY([LinkedServer], 'SELECT "dbname"."spname"(@p1,@p2, @p3)')

我将在实验后立即添加评论和示例”来做到这一点。

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.

一曲爱恨情仇 2024-10-26 04:58:43

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)

4 part object names are valid only for SQL Server linked servers.

You have to have your EXEC inside an 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

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)
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文