使用光标执行循环操作
DROP
PROCEDURE
IF
EXISTS
sp_opr;
CREATE PROCEDURE sp_opr()
BEGIN
/* 定义变量一 */
DECLARE _Err_Code CHAR ( 8 ) DEFAULT '' ;
/* 定义变量二 */
DECLARE _Cnt INT DEFAULT 0 ;
/* 光标 */
DECLARE _done INT DEFAULT 0 ;
DECLARE _Cur_Error CURSOR FOR
SELECT col1,col2 FROM table WHERE rec_dd = ADDDATE(CURDATE(), - 1 );
DECLARE CONTINUE HANDLER FOR SQLSTATE ' 02000 ' SET _done = 1 ;
/* 打开光标 */
OPEN _Cur_Error;
/* 循环执行 */
REPEAT
FETCH _Cur_Error INTO _Err_Code, _Cnt; -- 读取下一行
IF NOT _done THEN
-- 这里的代码被循环执行(这里可以使用上面读取的值)
END IF ;
UNTIL _done END REPEAT; -- 当_done=1时退出被循
/*关闭光标*/
CLOSE _Cur_Error;
END ;
CREATE PROCEDURE sp_opr()
BEGIN
/* 定义变量一 */
DECLARE _Err_Code CHAR ( 8 ) DEFAULT '' ;
/* 定义变量二 */
DECLARE _Cnt INT DEFAULT 0 ;
/* 光标 */
DECLARE _done INT DEFAULT 0 ;
DECLARE _Cur_Error CURSOR FOR
SELECT col1,col2 FROM table WHERE rec_dd = ADDDATE(CURDATE(), - 1 );
DECLARE CONTINUE HANDLER FOR SQLSTATE ' 02000 ' SET _done = 1 ;
/* 打开光标 */
OPEN _Cur_Error;
/* 循环执行 */
REPEAT
FETCH _Cur_Error INTO _Err_Code, _Cnt; -- 读取下一行
IF NOT _done THEN
-- 这里的代码被循环执行(这里可以使用上面读取的值)
END IF ;
UNTIL _done END REPEAT; -- 当_done=1时退出被循
/*关闭光标*/
CLOSE _Cur_Error;
END ;
本文转自chy710博客园博客,原文链接:http://www.cnblogs.com/chy710/archive/2007/06/13/782481.html
,如需转载请自行联系原作者