Mysql 游标总结

2022-01-08  本文已影响0人  编程人生


Mysql 游标总结

在MySql中的查询语句能返回多条记录结果,那么表达式中如何遍历这些记录结果?在MySql中提供了游标的功能.游标类似于C语言的

指针功能,允许用户对单独的数据进行访问,而不用对整个数据集进行操作.

在Mysql中,游标包括两部分:游标位置和游标结果集.游标位置是指向结果集中的某一行的指针,游标结果集是由定义游标的select

语句返回的集合.处理游标结果集的方法可以通过游标定位到结果集的某一行,以及对定位到的结果集中的当前行进行数据修改.

游标的性能并不高:原因是遍历结果集中每一行都会增加服务器的负担.

游标的使用:首先要声明游标和打开游标,然后才能使用游标,最后关闭游标.

一.声明游标:

DECLARE 游标名称 CUROR FOR 查询语句:

例如:为xscj 数据库中的xsqk 表创建一个普通游标,名称为xsqk_cursor ,其sql 语句为:

declare xsqk_cursor curor for 

select 学号,姓名,性别,专业名 from xsqk;

二.打开游标

open xsqk_cursor;

在打开记录时,游标并未指向第一条记录, 而是指向第一条记录的前面.

三.使用游标

语法规则:

fetch 游标名称 into 变量名1[变量名2....]

其中要求"变量名"的定义要在Fetch前 ,使用游标的作用是将游标名称中的select语句的执行结果保存到指定的"变量名"中

.这里指定的"变量名"数量一定要与select中查询出的字段数量一样多.如果要获取多行数据,需要使用循环语句去执行fetch.

fectch语句用来移动这个游标.

请看下面的例子:

create produce xsqk_proc()  #创建存储过程

begin

declare flag in default 0; #定义结束标志,当flag为0时表示检索成功,为1时跳出检索.

declare xh char(10); 定义变量

declare xm varchar2(10);

delcare xb char(2);

declare zym varchar2(20);

declare xsqk_cursor1 cursor for select 学号,姓名,性别,专业名 from xsqk; #定义游标

delcare continue  for not found set flag =1; #定义处理程序

set flag = 10;

open xsqk_cursor1 ;    #打开游标

f_loop : loop

fetch xsqk_cursor1 into xh,xm,xb,zym;

if flag =1 then

leave f_loop;

else

select xh, xm ,xb, zym; #显示检索结果

end if ;

end loop f_loop;

end

四.关闭游标

close 游标名称;

例如: close xsqk_cursor1;

上一篇 下一篇

猜你喜欢

热点阅读