02MySQL ----光标的运用

注意:关于示例所讲到的存储过程和函数及数据库表的创建,可通过查看之前的文章有进行介绍。。。

  1. 01MySQL ---- 存储过程和存储函数入门
  2. 02MySQL ----光标的运用
  3. 03MySQL----存储过程和存储函数的调用
  4. 04MySQL----查看、修改存储过程和存储函数​​​​​​​

通过MySQL查询数据库,其结果可能为多条记录。在存储过程和函数中使用光标可以实现逐条读取结果集中的记录。

光标使用包括声明光标(DECLARE CURSOR)、打开光标(OPEN CURSOR)、使用光标(FETCH CURSOR)和关闭光标(CLOSE CURSOR)。值得一提的是,光标必须声明在处理程序之前,且声明在变量和条件之后。

1 声明光标

在MySQL中,声明光标仍使用关键字DECLARE,其语法如下:

DECLARE cursor_name CURSOR FOR select_statement

其中,

  • cursor_name是光标的名称,光标名称的使用于表名同样的规则;
  • select_statement是一个SELECT语句,返回一行或多行数据。

该语句也可以在存储过程中定义多个光标,但是必须保证每个光标名称的唯一性,即每一个光标必须有自己唯一的名称。

通过上述定义来声明光标info_of_student,其代码如下:

declare info_of_student cursor for select sid,name,age,sex,age from studentinfo where sid=1;

说明:

这里SELECT子句中不能包含INTO子句,并且光标只能在存储过程或存储函数中使用。上述代码并不能单独执行。

2 打开光标

在光标声明之后,要从光标中提取数据,必须首先打开光标。在MySQL中使用关键字OPEN来打开光标,其基本的语法如下:

OPEN cursor_name

其中,cursor_name参数标识光标的名称。

在程序中,一个光标可以打开多次。由于可能在用户打开光标后,其他用户或程序正在更新数据表,所以可能导致用户每次打开光标后,显示的结果都不同。

打开上面已经声明的光标info_of_student,其代码如下:

open info_of_student;

3 使用光标

光标在顺利打开后,可以使用FETCH..INTO语句来读取数据,其语法如下所示:

FETCH cursor_name into var_name[,var_name]....

其中,

  • cursor_name代表已经打开光标的名称;
  • var_name参数表示将光标中的SELECT语句查询出来的信息存入该参数中。

var_name是存放数据的变量名,必须在声明光标前定义好。FETCH…INTO语句与SELECT…INTO语句具有相同的意义。


将已打开的光标info_of_student中SELECT语句查询出来的信息存入tmp_name和tmp_tel中。其中,tmp_name和tmp_tel必须在使用前定义。其代码如下。

fetch info_of_student into tpm_name,tmp_tel;

4 关闭光标

光标使用完毕后,要及时进行关闭,在Mysql中使用关键字CLOSE关闭光标,其语法格式如下:

CLOSE cursor_name

cursor_name 参数标识光标名称。下面关闭已经打开的光标info_of_student,其代码如下:

CLOSE info_of_student

说明

对于已经关闭的光标,在其关闭之后使用关键字FETCH来使用光标。光标在使用完毕之后一定要关闭。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值