MySQL 存儲(chǔ)過(guò)程和"Cursor"的使用方法
更新時(shí)間:2008年12月04日 13:16:58 作者:
本文中介紹了一個(gè)MySQL的存儲(chǔ)過(guò)程,其中涉及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;
總結(jié):
1、注意設(shè)置游標(biāo)的countinue handler:DECLARE CONTINUE HANDLER FOR NOT FOUND set stopFlag=1;
2、注意REPEAT和UTILE [停止條件] END REPEAT的使用,否則不會(huì)循環(huán);
3、如何RUN,輸入并執(zhí)行:call justifyGroupNum()
復(fù)制代碼 代碼如下:
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;
總結(jié):
1、注意設(shè)置游標(biāo)的countinue handler:DECLARE CONTINUE HANDLER FOR NOT FOUND set stopFlag=1;
2、注意REPEAT和UTILE [停止條件] END REPEAT的使用,否則不會(huì)循環(huán);
3、如何RUN,輸入并執(zhí)行:call justifyGroupNum()
相關(guān)文章
linux環(huán)境下配置mysql5.6支持IPV6連接的方法
本文主要介紹在linux系統(tǒng)下,如何配置mysql支持IPV6的連接,本文圖文并茂給大家介紹的非常詳細(xì),具有參考借鑒價(jià)值,需要的朋友參考下吧2018-01-01
Ubuntu上安裝MySQL+問(wèn)題處理+安全優(yōu)化
這篇文章主要匯總介紹了Ubuntu上安裝MySQL+問(wèn)題處理+安全優(yōu)化的相關(guān)事項(xiàng),非常的細(xì)致全面,有需要的小伙伴可以參考下2016-03-03
MySQL與PHP的基礎(chǔ)與應(yīng)用專(zhuān)題之?dāng)?shù)據(jù)控制
MySQL是一個(gè)關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng),由瑞典MySQL?AB?公司開(kāi)發(fā),屬于?Oracle?旗下產(chǎn)品。MySQL?是最流行的關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng)之一,本系列將帶你掌握php與mysql的基礎(chǔ)應(yīng)用,本篇帶你了解數(shù)據(jù)控制2022-02-02
21條MySQL優(yōu)化建議(經(jīng)驗(yàn)總結(jié))
這篇文章主要介紹了21條MySQL優(yōu)化建議,均來(lái)自個(gè)人的實(shí)戰(zhàn)經(jīng)驗(yàn)總結(jié),需要的朋友可以參考下2014-07-07
Mysql中between...and引起的索引失效問(wèn)題及解決
這篇文章主要介紹了Mysql中between...and引起的索引失效問(wèn)題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-07-07
如何解決mysql執(zhí)行導(dǎo)入sql文件速度太慢的問(wèn)題
文章介紹了一種通過(guò)修改MySQL導(dǎo)出命令參數(shù)來(lái)優(yōu)化大SQL文件導(dǎo)入速度的方法,通過(guò)對(duì)比目標(biāo)庫(kù)和導(dǎo)出庫(kù)的參數(shù)值,并使用優(yōu)化后的參數(shù)進(jìn)行導(dǎo)出,再在目標(biāo)庫(kù)導(dǎo)入,顯著提高了導(dǎo)入速度2024-11-11

