首頁 >資料庫 >mysql教程 >如何處理 OPENROWSET 查詢中的變數替換?

如何處理 OPENROWSET 查詢中的變數替換?

Patricia Arquette
Patricia Arquette原創
2025-01-05 18:15:39631瀏覽

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

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn