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中文網其他相關文章!