使用變數對OPENROWSET 查詢進行故障排除
使用OPENROWSET 函數存取外部資料時,如果在變數表達式中包含變數表達式,則可能會遇到錯誤查詢字串。此類範例之一是錯誤「' '附近的語法不正確。」當您嘗試將變數與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中文網其他相關文章!