利用游標迴圈遍歷修改列

2022-05-01 23:45:16 字數 993 閱讀 8210

如下圖,有一張使用者表tb_user,現在的需求是將表中所有小於25歲的使用者全部加到25歲:

具體**:

begin

declare @error int --記錄每次執行sql後是否有錯誤,0表示沒有錯誤

declare @temp varchar(50) --每次迴圈的物件(可以理解成for迴圈裡面的i值)

set @error=0

begin tran --開啟事物,保證多次執行sql的原子性

declare order_cursor cursor --申明乙個遊標量,所屬值為id

for(select id from tb_user where age<=25)

open order_cursor --開啟這個游標

fetch next from order_cursor into @temp --迴圈這個遊標量

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

begin

update tb_user set age=age+(25-age) where id=@temp

set @error=@error+@@error --記錄每次執行sql後是否有錯誤,0表示沒有錯誤

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

endif(@error=0)

begin

commit tran --沒有出現錯誤,提交事物

endelse

begin

rollback tran --出現錯誤,回滾事物

endclose order_cursor --關閉游標

deallocate order_cursor --釋放游標

endgo

執行結果截圖:

使用游標迴圈修改

declare fclt name nvarchar 30 fclt num varchar 20 temp varchar 30 fclt barcode varchar 30 declare my cursor cursor 定義游標 for select fclt num,fclt name,...

使用游標 游標FOR迴圈

游標for迴圈是在pl sql塊中使用游標最簡單的方式,它簡化了對游標的處理。當使用游標for迴圈時,oracle會隱含的開啟游標,提取游標資料並關閉游標。例子 顯示emp表所有雇員名及其工資 declare cursor emp cursor isselect ename,sal from emp...

SQL 利用游標迴圈新增資料

查詢資料 select invest.userid,borrowreturn.realreturntime,borrow.investtype,case borrow.investtype when 0 then 成功000,請注意查收 when 1 then 成功111,請注意查收 when 2 ...