mysql中游標結合while的使用

2021-09-19 03:46:29 字數 1222 閱讀 9336

-- 游標只能在儲存過程、方法內部使用

/*遍歷賬戶表的資料,將餘額小於等於100的賬戶加100,大於100小於500加50

*/create procedure proc_add_money()

begin

-- 宣告變數,用來接收游標指向的行的資料

declare v_id int(11);

declare v_username varchar(20);

declare v_account_no varchar(20);

declare v_balance decimal(11,2);

-- 迭代狀態

declare done int(1) default false;

-- 宣告游標

declare cursor_account cursor for select * from t_account;

-- 如果迭代到最後乙個sql返回狀態改變done=1

declare continue handler for not found set done=true;

-- 開啟游標

open cursor_account;

-- 移動指標,取出指向行的資料

fetch cursor_account into v_id, v_username, v_account_no, v_balance;

while (not done) do

-- 判斷餘額加錢

if v_balance <= 100 then

select v_id;

update t_account set balance = balance + 100 where id = v_id;

elseif v_balance > 100 and v_balance < 500 then

select v_id;

update t_account set balance = balance + 50 where id = v_id;

end if;

-- 移動指標,取出指向行的資料

fetch cursor_account into v_id, v_username, v_account_no, v_balance;

end while;

-- 關閉游標

close cursor_account;

end-- 執行儲存過程

call proc_add_money();

oralce 動態游標和靜態游標結合

create or replace procedure sgcm work plan history is type ref cursor type is ref cursor 定義乙個動態游標 usrs ref cursor type str classify id varchar2 250 類別...

MySQL中的游標

對mysql的儲存過程中迴圈讀取資料表中的物件,應該如何實現呢?在mysql 中,游標 cursor 解決了這個問題。游標多有哪幾種操作呢 定義游標 開啟游標 獲取游標內容和關閉游標。定義游標的語法如下 宣告的英文 cursor name cursor for sql statement curso...

Oracle游標 for loop if結合應用

什麼時候會用到oracle游標,以及其中的for loop if呢?先看這樣乙個需求 有一張學生授課表t teaching,每個學生都有數門課程 主鍵id 自增 課程號course id 學號user id101 201501202 201501303 201501401 201502501 201...