-- 游标只能在存储过程、方法内部使用
/*
遍历账户表的数据,将余额小于等于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