SQL Server 游標的使用 迴圈修改資料

2021-10-04 21:48:55 字數 1384 閱讀 2524

begin

declare @id

int,@returnrequestid

varchar(32

),@returnauditor

varchar(32

),@returndate datetime --宣告游標變數

set @id=

0--此處id相當於for迴圈裡的i

declare order_cursor cursor for

select returnrequest.id,accountpwd.employeeid,

putoutflow.founderdate from [dbo].[

returnrequest]as

returnrequest

left join [dbo].[

returndetails]as

returndetails

on returnrequest.id=

returndetails.returnid

left join [dbo].[

putoutflow]as

putoutflow

on returndetails.id=

putoutflow.itemdetailid

left join [dbo].[

accountpwd]as

accountpwd

on putoutflow.founder=accountpwd.account --建立游標

open order_cursor --開啟游標

fetch next from order_cursor into @returnrequestid,@returnauditor,@returndate --給游標變數賦值

while @@fetch_status =

0--返回被 fetch語句執行的最後游標的狀態--

begin

update [dbo].[

returnrequest

]set returnauditor= @returnauditor,returndate=@returndate

where id=@returnrequestid --把游標的值賦給需要更新的字段

set @id=@id+

1--此處相當於for迴圈裡i++

fetch next from order_cursor into @returnrequestid,@returnauditor,@returndate --轉到下乙個游標,沒有會死迴圈

endclose order_cursor --關閉游標

deallocate order_cursor --釋放游標

endgo

SQL Server游標的使用

declare cursor name cursor local global forward only scroll static keyset dynamic fast forward read only scroll locks optimistic type warning for sele...

SQL Server游標的使用

由於sql server中沒有提供直接遍歷表的每一行的方法,所以只有通過游標和while迴圈來代替。當讓也可以不適用游標,僅僅使用while迴圈也能遍歷表 當id為int,主鍵時可用這種方式 但兩種方式我沒有做過實際的對比測試,效率誰高誰低我也不好說。我只給乙個游標使用的簡單示例,想深入了解和使用游...

SQL SERVER 游標的使用

定義游標,讓游標指向sql查詢的結果 declare democursor cursor for select name,id from userinfo 開啟游標。open democursor declare name nvarchar 32 declare id int 把游標指向的資料取出來...