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

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

Linda Hamilton
Linda Hamiltonオリジナル
2025-01-14 12:48:44964ブラウズ

How Can I Pass Parameters to OPENQUERY in SQL Server?

OPENQUERY でのパラメータの受け渡し: 回避策

SQL Server の OPENQUERY コマンドを使用すると、リンク サーバーのクエリが容易になります。 ただし、変数をパラメータとして直接渡すことはサポートされていません。 この記事では、効果的な回避策について説明します。

パラメータ化されたクエリのメソッド

OPENQUERY:

の制限にもかかわらず、いくつかの戦略を使用してパラメータを効果的に渡すことができます。

1. 基本値のハードコーディング:

構造は既知だが特定の値が必要なクエリの場合、動的 SQL が解決策を提供します。

<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>

2. クエリ全体を渡す:

このアプローチは、T-SQL クエリ全体またはリンク サーバー名 (あるいはその両方) を動的に決定する必要があるシナリオに最適です。

<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>

3. sp_executesql の活用:

複雑な引用を簡素化するために、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>

これらの手法を採用することで、開発者はパラメーター化されたクエリを OPENQUERY にうまく組み込むことができ、その固有の制限を克服できます。 特定のニーズとクエリの複雑さに最も適した方法を選択してください。

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

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