MySQL基础 -- 游标

目录

1、定义

2、使用游标的步骤

案例


1、定义

游标是SQL的一种数据访问机制,是一种处理数据的方法

对查询结果再进行查询,用简单的select语句是无法完成的,游标就是针对这种情况而出现的。

能在结果集中像一个指针一样,让我能对结果集中的每一条记录进行定位,并对指向的记录中的数据进行操作的数据结构

2、使用游标的步骤

  • 声明游标
  • 打开游标
  • 使用游标
  • 关闭游标
  • 删除游标
//声明游标
declare 游标名 cursor for 查询语句

//打开游标
open 游标名

//使用游标
fetch 游标名 into 变量名
//变量名必须在声明游标之前就定义好
//游标查询结果集中的字段数,必须跟into后面的变量数一致

//关闭游标
close 游标名

//删除游标
deallocate 游标名

案例

创建一个存储过程,实现累加考试成绩最高的几个学员的总分,直到总和对于我们传入的 limit_total_grade的参数值,并且返回累加的人数:total_count;

create procedure proc_cursor(IN limit_total_grade int,OUT total_count int)
begin
    #声明相关的变量
    declare sum_grade int default 0;#累加的总成绩
    declare cursor_grade int default 0;#记录某条成绩
    declare score_count int default 0;#记录累加的记录数
    #定义游标
    declare score_cursor cursor
    for
    select grade from score order by grade;
    #打开游标
    open score_cursor;
    #使用游标
    repeat
        fetch score_cursor into cursor_grage;#从游标中获取一条数据
        set sum_grade = sum_grade + cursor_grade;#成绩累加
        set score_count = score_count + 1;#记录累加的次数
        until sum_grade > limit_total_grade#退出条件,成绩总和>传入的limit_total_grade
    end repeat;
    set total_count = score_count;
    #关闭游标
    close score_cursor;
end;
drop procedure proc_cursor
#调用存储过程
set @s_count = 0;
call proc_cursor(400,@s_count);
select @s_count;

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值