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

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

Linda Hamilton
リリース: 2025-01-14 12:35:47
オリジナル
115 人が閲覧しました

How Can I Use Parameters with SQL Server's OPENQUERY?

パラメータを使用した SQL Server OPENQUERY: 回避策

SQL Server の 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: クエリ全体を文字列として渡す

このアプローチにより、完全なクエリ、またはリンク サーバー名を動的に渡すことができます。

<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;
```  This method offers improved readability and reduces the risk of SQL injection vulnerabilities compared to string concatenation.  Note that you're executing `sp_executesql` on the linked server itself.


Choose the method that best suits your query complexity and preference for code clarity.  Remember to prioritize security and avoid SQL injection vulnerabilities when using dynamic SQL.</code>
ログイン後にコピー

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

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート