sql 游標迴圈遍歷

2021-09-06 14:55:55 字數 1093 閱讀 7373

原文:

sql 游標迴圈遍歷

寫儲存過程的時候碰到乙個需要對資料進行遍歷迴圈操作的問題,最後通過游標解決了,感覺很適用、

1 declare @level varchar(100

)2 declare @uid varchar(100

)3 declare cur cursor--定義乙個游標

4read_only

5for

select

egg_code.user_id,egg_prize_level

6from egg_code inner join egg_prize on egg_prize.user_id=egg_code.user_id--為所獲得的資料集指定游標

78 open cur--開啟游標

9 fetch next from cur into @uid,@level--把提取操作的列資料放到區域性變數中

10while(@@fetch_status=0)--返回被 fetch 語句執行的最後游標的狀態,而不是任何當前被連線開啟的游標的狀態。

1112

begin

13 --print '

等級:'+@level+'

--------------使用者id:

'+@uid

1415 update egg_code set prize_level=@level where user_id=@uid--執行操作

1617 --提前下一位資訊

18 fetch next from

cur into @uid,@level

19end

20 close cur--關閉游標

21 deallocate cur--刪除游標

22 go

使用游標的順序: 聲名游標、開啟游標、讀取資料、關閉游標、刪除游標。

由於 @@fetch_status 對於在乙個連線上的所有游標是全域性性的,要小心使用 @@fetch_status 。在執行一條 fetch 語句後,必須在對另一游標執行另一 fetch 語句前測試 @@fetch_status 。在任何提取操作出現在此連線上前,@@fetch_status 的值沒有定義。

sql 迴圈,游標

declare userid varchar 50 declare my cursor cursor 定義游標 for select userid from dbo.memberaccount 查出需要的集合放到游標中 open my cursor 開啟游標 fetch next from my c...

sql游標迴圈

declare begindate datetime convert datetime,2019.05.06 09 40 50 enddate datetime getdate idint declare my cursor cursor 定義游標 for select id from dbo.op...

SQL游標迴圈

begin 定義的這些變數就是以下查出的結果的字段數,一一對應 declare cid int,cno nvarchar 64 cname nvarchar 256 debtamount decimal begin 定義游標.declare vernier main cursor fast forw...