首頁 > 資料庫 > mysql教程 > 如何迭代 T-SQL 查詢結果並為每一行執行預存程序?

如何迭代 T-SQL 查詢結果並為每一行執行預存程序?

Linda Hamilton
發布: 2025-01-01 08:03:09
原創
858 人瀏覽過

How Can I Iterate Through T-SQL Query Results and Execute a Stored Procedure for Each Row?

T-SQL 循環查詢結果

假設您有一個從表中擷取ID 清單的查詢:

SELECT @id=table.id FROM table
登入後複製

然後您需要為每一行執行一個預存過程,傳入ID和另一個value:

EXEC stored_proc @varName=@id, @otherVarName='test'
登入後複製

在T-SQL 中,您可以使用CURSOR 來完成此操作:

DECLARE @id INT
DECLARE @name NVARCHAR(100)
DECLARE @getid CURSOR

SET @getid = CURSOR FOR
SELECT table.id,
       table.name
FROM   table

OPEN @getid
FETCH NEXT
FROM @getid INTO @id, @name
WHILE @@FETCH_STATUS = 0
BEGIN
    EXEC stored_proc @varName=@id, @otherVarName='test', @varForName=@name
    FETCH NEXT
    FROM @getid INTO @id, @name
END

CLOSE @getid
DEALLOCATE @getid
登入後複製

在此腳本中:

  • 我們宣告三個變數:@id (INT)、@name (NVARCHAR(100)) 和名為的CURSOR @getid。
  • 我們將 @getid 設定為一個 CURSOR,它從表 table 中選擇 ID 和名稱列。
  • 我們開啟 CURSOR,取得第一行,並將結果儲存在 @ id 和 @name。
  • 我們進入一個 WHILE 循環,只要 @@FETCH_STATUS 值為 0(表示已成功取得一行)。
  • 在迴圈內,我們執行預存程序,傳入@id、@otherVarName 參數的文字值「test」以及@varForName 參數的取得名稱值.
  • 我們取得下一行並將結果儲存在@id 和@name 中。
  • 當沒有更多行可以讀取時fetch 後,我們關閉並釋放 CURSOR。

此腳本允許您循環查詢結果並為每一行執行預存程序,根據查詢中的資料更新變數名稱和值.

以上是如何迭代 T-SQL 查詢結果並為每一行執行預存程序?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板