ホームページ >データベース >mysql チュートリアル >SQL Server の OPENQUERY でパラメータを使用するにはどうすればよいですか?

SQL Server の OPENQUERY でパラメータを使用するにはどうすればよいですか?

Susan Sarandon
Susan Sarandonオリジナル
2025-01-14 12:41:44957ブラウズ

How Can I Use Parameters with OPENQUERY in SQL Server?

OPENQUERY でのパラメーターの使用

OPENQUERY は、リンク サーバー データにアクセスするための強力なツールですが、クエリにパラメーターを組み込むのは困難な場合があります。ドキュメントには、OPENQUERY がパラメーターとして変数を受け入れないことが明確に記載されています。

解決策:

この制限を克服するには、いくつかの回避策が利用可能です:

  • 基本的な値を渡す: 特定の値を渡す必要がある単純な場合には、次のようなコードを使用します:
<code class="language-sql">DECLARE @TSQL varchar(8000), @VAR char(2)
SELECT @VAR = 'CA'
SELECT @TSQL = 'SELECT * FROM OPENQUERY(MyLinkedServer,''SELECT * FROM pubs.dbo.authors WHERE state = ''''' + @VAR + ''''''')'
EXEC (@TSQL)</code>
  • クエリ全体を渡します: 完全なクエリまたはリンク サーバー名を渡す必要がある場合は、次のようなコードを使用します:
<code class="language-sql">DECLARE @OPENQUERY nvarchar(4000), @TSQL nvarchar(4000), @LinkedServer nvarchar(4000)
SET @LinkedServer = 'MyLinkedServer'
SET @OPENQUERY = 'SELECT * FROM OPENQUERY('+ @LinkedServer + ','''
SET @TSQL = 'SELECT au_lname, au_id FROM pubs..authors'')'
EXEC (@OPENQUERY+@TSQL)</code>
  • Sp_executesql ストアド プロシージャを使用します: コードを簡素化し、複数の引用符の層を避けるには、次のメソッドを使用します:
<code class="language-sql">DECLARE @VAR char(2)
SELECT @VAR = 'CA'
EXEC MyLinkedServer.master.dbo.sp_executesql
N'SELECT * FROM pubs.dbo.authors WHERE state = @state',
N'@state char(2)',
@VAR</code>

以上がSQL Server の OPENQUERY でパラメータを使用するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。