ホームページ >データベース >mysql チュートリアル >OPENROWSET クエリで変数置換を処理するにはどうすればよいですか?
OPENROWSET クエリでの変数置換
このクエリは、変数 (@ID) を OPENROWSET ステートメントに動的に埋め込もうとするとエラーが発生します。
SELECT * FROM OPENROWSET( 'SQLNCLI', 'DRIVER={SQL Server};', 'EXEC dbo.sProc1 @ID = ' + @id )
エラー メッセージが間違っていることを示しています' ' 付近の構文。文字列と変数を連結しようとする試みが強調表示されています。
エラーが発生する理由
OPENROWSET では、変数を直接置換できません。プロバイダーに渡される文字列引数は逐語的に評価され、変数の評価と組み込みが防止されます。
解決策: 動的 SQL
OPENROWSET クエリに変数を埋め込むには、次の手順を実行する必要があります。動的 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 サイトの他の関連記事を参照してください。