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;
网友评论