2

リンク サーバーでクエリを実行しようとしていますが、ローカルで結果が必要です。

DECLARE @test TABLE
(
greeting CHAR(5)
)

INSERT INTO @test
EXEC('select ''hello'' as greeting')

SELECT * FROM @test

EXEC()and を使用しINSERT INTOますが、明らかにクエリはローカルで実行されています。

DECLARE @test TABLE
(
greeting CHAR(5)
)

INSERT INTO @test
EXEC('select ''hello'' as greeting') AT LINKED_SERVER

SELECT * FROM @test

まったく機能しません。

SELECT greeting FROM OpenQuery(LINKED_SERVER,'SELECT''hello'' AS greeting')

私が望むものを正確に達成しますが、動的文字列を使用する必要があり、それを機能させる唯一の方法は、クエリ全体を巨大な文字列にして、それをEXEC()に入れることです。本当に醜いから……。

助けてくれてありがとう!

4

1 に答える 1

2

以下を使用できます。

INSERT INTO @test
EXEC('select TOP 1 ''hello'' as greeting FROM LINKED_SERVER.SomeDB.dbo.SysObjects')

そして、実際に「こんにちは」という言葉だけを取得したくないと仮定すると...おそらく、実際にテーブルから値を選択するようなことをしたい場合、上記はあなたが望むものである可能性がさらに高くなるはずです.

于 2011-02-12T19:08:37.517 に答える