5.游标的使用
![在这里插入图片描述](https://img-blog.csdnimg.cn/fb801797b2fe446e806e3cecfb4dc0d7.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAd2VpeGluXzU0NjcxMDg3,size_20,color_FFFFFF,t_70,g_se,x_16)
#6.游标的使用
/*
游标使用的步骤:
①声明游标
②打开游标
③使用游标(从游标中获取数据)
④关闭游标
*/
#举例:创建存储过程“get_count_by_limit_total_salary()”,声明IN参数 limit_total_salary,
#DOUBLE类型;声明OUT参数total_count,INT类型。函数的功能可以实现累加薪资最高的几个员工的薪资值,
#直到薪资总和达到limit_total_salary参数的值,返回累加的人数给total_count。
DELIMITER//
CREATE PROCEDURE get_count_by_limit_total_salary(IN limit_total_salary DOUBLE,OUT total_count INT)
BEGIN
#声明局部变量
DECLARE sum_sal DOUBLE DEFAULT 0.0;#记录累加的工资总和
DECLARE emp_sal DOUBLE;#记录每一个员工的工资
DECLARE emp_count INT DEFAULT 0;#记录累加的人数
#1.声明游标
DECLARE emp_cursor CURSOR FOR SELECT salary FROM employees ORDER BY salary DESC;
#2.打开游标
OPEN emp_cursor;
REPEAT
#3.使用游标
FETCH emp_cursor INTO emp_sal;
SET sum_sal=sum_sal+emp_sal;
SET emp_count=emp_count+1;
UNTIL sum_sal>=limit_total_salary
END REPEAT;
SET total_count=emp_count;
#4.关闭游标
CLOSE emp_cursor;
END//
DELIMITER;
#调查
CALL get_count_by_limit_total_salary(200000,@total_count);
SELECT @total_count;