MySQL的存儲過程寫法和"Cursor"的使用

本文中介紹了一個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存儲過程基本函數一.字符串類 CHARSET(str) //返回字串字符集CONCAT (string2 [,... ]) //連接字串INSTR (string ,substring ) //返回substring首次在string中出現的位置,不存在返回0LCASE (string2 ) //轉換成...查看完整版>>mysql存儲過程基本函數
 
存儲過程中如何使用事務
在數據庫編程中,事務是經常需要用到的技術,在.net平台上,事務處理是非常好用的,但是在Sql Server數據庫的存儲過程中如何使用事務來完成數據的批量操作呢?解決方案如下: Declare @id int BEGIN TRANSACTION ...查看完整版>>存儲過程中如何使用事務
 
C#中使用存儲過程中的返回值
對于高手這個問題可能很簡單(可不要扔西紅柿啊!!),可對于新手可能真會苯住一會,我拿出來積累一下,也供大家參考: string sql = "DECLARE @para0 char(40) "; sql += "exec 存儲過程名稱,p...查看完整版>>C#中使用存儲過程中的返回值
 
在VisualBasic.NET中使用存儲過程
  摘要:Billy Hollis 解釋了在複雜系統中使用存儲過程的好處,使存儲過程超出了演示軟件的範疇,並提供了有關如何訪問存儲過程並在您自己的應用程序中開始使用這些存儲過程的實用示例。  我們作者通常將軟件分爲...查看完整版>>在VisualBasic.NET中使用存儲過程
 
在VisualBasic.NET中使用存儲過程
  我們作者通常將軟件分爲兩類 - 真實軟件和演示軟件。真實軟件是在真實環境中使用的軟件。演示軟件用于闡釋編程概念。  您在文章和書籍中看到的大部分代碼都是演示軟件。它必須比真實軟件簡單,否則讀者將爲那些...查看完整版>>在VisualBasic.NET中使用存儲過程