• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

MySQL游标概念与用法详解

mysql 搞代码 4年前 (2022-01-09) 17次浏览 已收录 0个评论

本文实例讲述了MySQL游标概念与用法。分享给大家供大家参考,具体如下:

1、游标的概念(Cursor)

一条sql,对应N条资源,取出资源的接口,就是游标,沿着游标,可以一次取出1行。如果开发过安卓的同学应该知道有一个Api是Cursor,也是读取SQLite数据库用的,和这个有点类似。

2、使用游标的步骤

(1)声明

使用declare进行声明

declare 游标名 cursor for select_statement

(2)打开游标

使用open进行打开

open 游标名

(3)从游标中取值

使用fetch进行取值

fetch 游标名 into var1,var2[,...] --将取到的一行赋值给多个变量

(4)关闭游标

使用close关闭游标

close 游标名

3、创建一个简单的游标

需求:从商品表中读取第一行数据

商品表(goods)数据:

注意:我这里已经将MySQL的结束标识符改为 $,如果要知道怎么设置为$,请参考前面一篇文章:MySQL触发器。

定义:

create procedure p12()
begi<mark>本文来源gaodaimacom搞#代%码@网-</mark>n
  /*定义三个变量用于存放商品id,商品名称,商品库存量*/
  declare row_gid int ; 
  declare row_name varchar(20);
  declare row_num int;
  declare getgoods cursor for select gid,name,num from goods;  --定义游标
  open getgoods; --打开游标
  fetch getgoods into row_gid,row_name,row_num;--从游标中取值
  select row_name,row_num; --显示操作
  close getgoods; --关闭游标
end$

输出结果:

4、多次取值操作

create procedure p13()
begin
  declare row_gid int ;
  declare row_name varchar(20);
  declare row_num int;
  declare getgoods cursor for select gid,name,num from goods;  
  open getgoods;
  fetch getgoods into row_gid,row_name,row_num;
  select row_name,row_num;
  fetch getgoods into row_gid,row_name,row_num;
  select row_name,row_num;
  fetch getgoods into row_gid,row_name,row_num;
  select row_name,row_num;
  fetch getgoods into row_gid,row_name,row_num;
  select row_name,row_num;
  close getgoods;
end$

输出:

注意:当游标读到末尾,如果继续进行取值操作会发生报错

5、游标循环表中的所有数据

(1)使用计数器来循环

create procedure p14()
begin 
  declare cnt int default 0;
  declare i int default 0;
  declare row_gid int ;
  declare row_name varchar(20);
  declare row_num int;
  declare getgoods cursor for select gid,name,num from goods;
  select count(*) into cnt from goods;
  open getgoods;
  repeat 
    fetch getgoods into row_gid,row_name,row_num;
  select row_name,row_num;
  set i:= i+1;
  until i >= cnt end repeat;
  close getgoods;
end$

输出结果:


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:MySQL游标概念与用法详解

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址