對於mysql,還是菜鳥。
近期做個東西,寫了乙個mysql 的儲存過程,其中涉及cursor的使用,如下:
create procedure `justifygroupnum`()
not deterministic
sql security definer
comment ''''
begin
/*how to run:call justifygroupnum()*/
declare p_group_id int;
declare p_num int;
declare stopflag int;
declare cursor_name cursor
for select c_group_id,count(*) as num
from `t_group_member`
where c_valid in (3,4)
group by c_group_id;
declare continue handler for not found set stopflag=1;
open cursor_name;
repeat
fetch cursor_name into p_group_id,p_num;
begin
update t_groupinfo set c_member_number=p_num where c_group_id=p_group_id;
end;
until stopflag = 1
end repeat;
close cursor_name;
end;
關注點有:
1、注意設定游標的countinue handler:declare continue handler for not found set stopflag=1;
2、注意repeat和utile [停止條件] end repeat的使用,否則不會迴圈;
3、怎樣run?輸入並執行:call justifygroupnum()
MySql儲存過程寫法
mysql儲存過程的單行注釋用 如果使用 則必須在後面使用至少乙個空格,否則儲存過程編譯不通過 create procedure addwebgameadmin in gameid int begin declare gametitle varchar 100 character set utf8 ...
儲存過程寫法
引用 儲存過程呼叫 drop procedure if exists pro rep shadow rs delimiter rep shadow rs 用來處理資訊的增加,更新和刪除 每次只更新上次以來沒有做過的資料 根據不同的標誌位 需要乙個輸出的引數,如果返回為0,則呼叫失敗,事務回滾 如果返...
儲存過程寫法
引用 儲存過程呼叫 drop procedure if exists pro rep shadow rs delimiter rep shadow rs 用來處理資訊的增加,更新和刪除 每次只更新上次以來沒有做過的資料 根據不同的標誌位 需要乙個輸出的引數,如果返回為0,則呼叫失敗,事務回滾 如果返...