0

編集


最終的な目標は、リンクサーバーを介してSQLServer2008からの入力パラメーターと出力パラメーターを使用してSybaseでホストされているストアドプロシージャを呼び出すことです。


タイトルはかなりはっきりしていると思います。

私の目標は、SQLServer2008のSybaseSQLAnywhere 8でホストされているストアドプロシージャを、作成済みのリンクサーバーを介して実行することです。

リンクサーバーを介して行われたSQLクエリはすべて機能しています。さらに、関数を実行することはできましたが、そのような戻り値を取得する方法がわかりません。

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

4すべてのあなたの助けに感謝します!

マウロ

4

3 に答える 3

1

4つの部分からなる命名規則を使用できますか?

お気に入り

exec LinkedServerName.dbname.dbo.procedurename @param1, @param2, @param3
于 2011-02-22T20:42:12.493 に答える
0

やっと電話でできました

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

実験したらすぐにコメントと例を追加します。

于 2011-03-09T10:32:12.567 に答える
0

4つの部分のオブジェクト名は、SQLServerにリンクされたサーバーでのみ有効です。

OPENQUERY内にEXECが必要です

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)
于 2011-03-13T15:11:51.113 に答える