mysql 存储过程创建及游标的使用

DROP PROCEDURE ip_analyse;

DELIMITER //
CREATE PROCEDURE ip_analyse()  /*定义存储过程*/
BEGIN
DECLARE done BOOLEAN; /*定义一个变量*/
DECLARE str VARCHAR(20); /*定义一个变量*/
DECLARE cur1 CURSOR FOR SELECT ip FROM ip_list; /*定义游标;必须定义在变量之后!*/
DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done=1; /*定义句柄。continue设定循环退出条件。*/
/*当sqlstate为’02000‘时,设置done的值为1,02000是指一个没有找到的错误码*/
/*sqlstate是mysql的规定。表示找到最后无数据时,mysql报出的状态码!!*/
OPEN cur1; /*打开游标*/
REPEAT /*循环开始*/
FETCH cur1 INTO str; /*获取一行一列的数据*/
INSERT INTO ip_unusual VALUES('[email protected]','test',str,NOW(),'test',NULL);
UNTIL done END REPEAT; /*类似于java中的do...while循环*/
CLOSE cur1 ; /*关闭游标*/
END //
DELIMITER ;
 
/*调用过程:*/
CALL ip_analyse();

SELECT * FROM ip_unusual;

你可能感兴趣的:(mysql 存储过程创建及游标的使用)