Выполнить хранимую процедуру sybase как процедуру связанного сервера sql server 2008 - PullRequest
0 голосов
/ 22 февраля 2011

EDIT


Конечная цель - вызвать хранимую процедуру, размещенную в sybase, с параметрами ввода и вывода из SQL Server 2008 через связанный сервер


Я думаю, что заголовок довольно ясен.

Моя цель - выполнить хранимую процедуру, размещенную в Sybase SQL Anywhere 8 в SQL Server 2008, через связанный сервер, который я уже создал.

Любой запрос SQLсделано через связанный сервер работает.Кроме того, мне удалось выполнить функцию, но я не знаю, как получить возвращаемое значение, подобное этому

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

Спасибо 4 за помощь!

Мауро

Ответы [ 3 ]

1 голос
/ 22 февраля 2011

Можете ли вы использовать соглашение об именовании из четырех частей?

как

exec LinkedServerName.dbname.dbo.procedurename @param1, @param2, @param3
0 голосов
/ 13 марта 2011

Имена объектов из 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)
0 голосов
/ 09 марта 2011

Я наконец смог сделать это, позвонив

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

Я добавлю комментарии и пример, как только я экспериментирую.

...