ホームページ >データベース >mysql チュートリアル >OPENROWSET クエリで変数置換を処理するにはどうすればよいですか?

OPENROWSET クエリで変数置換を処理するにはどうすればよいですか?

Patricia Arquette
Patricia Arquetteオリジナル
2025-01-05 18:15:39634ブラウズ

How to Handle Variable Substitution in OPENROWSET Queries?

OPENROWSET クエリでの変数置換

このクエリは、変数 (@ID) を OPENROWSET ステートメントに動的に埋め込もうとするとエラーが発生します。

SELECT * 
FROM OPENROWSET(
    'SQLNCLI',
    'DRIVER={SQL Server};',
    'EXEC dbo.sProc1 @ID = ' + @id 
 )

エラー メッセージが間違っていることを示しています' ' 付近の構文。文字列と変数を連結しようとする試みが強調表示されています。

エラーが発生する理由

OPENROWSET では、変数を直接置換できません。プロバイダーに渡される文字列引数は逐語的に評価され、変数の評価と組み込みが防止されます。

解決策: 動的 SQL

OPENROWSET クエリに変数を埋め込むには、次の手順を実行する必要があります。動的 SQL テクニックを使用します:

  1. 変数を宣言し、次のように初期化します。値。
  2. OPENROWSET ステートメントと変数値を連結して、動的 SQL 文字列を構築します。
  3. 動的 SQL を準備して実行します。

例を次に示します。

Declare @ID int
Declare @sql nvarchar(max)
Set @ID=1
Set @sql='SELECT * 
FROM OPENROWSET(
               ''SQLNCLI'',
               ''DRIVER={SQL Server};'',
               ''EXEC dbo.usp_SO @ID =' + convert(varchar(10),@ID) + ''')'

-- Print @sql
 Exec(@sql)

動的 SQL を使用すると、実行時にプロバイダー文字列を動的に構築できます。変数値を含めます。

以上がOPENROWSET クエリで変数置換を処理するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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