常常需要获取游标中的行记录数,MySQL存储过程提供了两种方法来获取游标的行记录数。
第一种方法是使用FOUND_ROWS()函数,该函数可以返回最后一条查询影响的行数,主要用于SELECT语句。
DECLARE cursor_1 CURSOR FOR SELECT * FROM employees; OPEN cursor_1; SELECT FOUND_ROWS(); CLOSE cursor_1;
第二种方法是使用DECLARE和SELECT INTO语句来获取游标的行记录数,主要用于INSERT、UPDATE和DELETE语句。
DECLARE cursor_1 CURSOR FOR SELECT * FROM employees WHERE id>10; DECLARE count INT; DECLARE done BOOLEAN DEFAULT FALSE; DECLARE CONTINUE HANDLER FOR NOT FOUND SET done=TRUE; OPEN cursor_1; SET count=0; REPEAT FETCH cursor_1 INTO ... ... SET count=count+1; UNTIL done END REPEAT; SELECT count; CLOSE cursor_1;
在这段代码中,DECLARE count INT;声明了一个变量用来计数。使用DECLARE CONTINUE HANDLER语句,当游标FETCH到达行末位置时,抛出一个NOT FOUND异常,然后使用SET done=TRUE来标记循环结束。FETCH子句可以将游标中的行数据赋值给变量中。
通过以上两种方法,可以轻松地获取MySQL存储过程游标的行记录数,从而更好地控制数据的获取。