変数を使用した OPENROWSET クエリのトラブルシューティング
OPENROWSET 関数を使用して外部データにアクセスする場合、変数式を変数内に含めるとエラーが発生する可能性があります。クエリ文字列。そのような例の 1 つは、「' ' 付近の構文が正しくありません」というエラーです。これは、次のクエリに見られるように、OPENROWSET ステートメントで変数を連結しようとすると発生します。
SELECT * FROM OPENROWSET( 'SQLNCLI', 'DRIVER={SQL Server};', 'EXEC dbo.sProc1 @ID = ' + @id )
このクエリでは、変数 @id が ' ' 演算子を使用して EXEC ステートメントに追加されています。 。ただし、OPENROWSET はクエリ文字列での式の使用をサポートしていません。
解決策:
この問題を解決するには、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 クエリを保持する変数 @sql を定義し、CONVERT() 関数を使用して変数 @ID を連結します。これにより、必要なパラメータを使用して動的 SQL ステートメントを実行できるようになります。
以上が変数を使用した OPENROWSET クエリの「' ' 付近の構文が正しくありません」エラーを修正する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。