【MySQL】mysql游标(cursor) 定义及使用
1、概念游标(Cursor)它使用户可逐行访问由SQL Server返回的结果集。 使用游标(cursor)的一个主要的原因就是把集合操作转换成单个记录处理方式。用SQL语言从数据库中检索数据后,结果放在内存的一块区域中,且结果往往是一个含有多个记录的集合。游标机制允许用户在SQL server内逐行地访问这些记录,按照用户自己的意愿来显示和处理这些记录。优点1、允许程序对由查询语句select返
1、概念
游标(Cursor)它使用户可逐行访问由SQL Server返回的结果集。
使用游标(cursor)的一个主要的原因就是把集合操作转换成单个记录处理方式。
用SQL语言从数据库中检索数据后,结果放在内存的一块区域中,且结果往往是一个含有多个记录的集合。
游标机制允许用户在SQL server内逐行地访问这些记录,按照用户自己的意愿来显示和处理这些记录。
优点
1、允许程序对由查询语句select返回的行集合中的每一行执行相同或不同的操作,而不是对整个行集合执行同一个操作。
2、提供对基于游标位置的表中的行进行删除和更新的能力。
3、游标实际上作为面向集合的数据库管理系统(RDBMS)和面向行的程序设计之间的桥梁,使这两种处理方式通过游标沟通起来。
原理
游标就是把数据按照指定要求提取出相应的数据集,然后逐条进行数据处理。
使用游标的顺序
声名游标、打开游标、读取数据、关闭游标、删除游标。
使用游标(cursor)
-
声明游标
DECLARE cursor_name CURSOR FOR select_statement
这个语句声明一个游标。也可以在子程序中定义多个游标,但是一个块中的每一个游标必须有唯一的名字。声明游标后也是单条操作的,但是不能用SELECT语句不能有INTO子句。 -
游标OPEN语句
OPEN cursor_name 这个语句打开先前声明的游标。 -
游标FETCH语句
FETCH cursor_name INTO var_name [, var_name] …这个语句用指定的打开游标读取下一行(如果有下一行的话),并且前进游标指针。 -
游标CLOSE语句
CLOSE cursor_name 这个语句关闭先前打开的游标
示例,统计emp表中性别为男的人数,sql如下:
CREATE pa(out sum bigint)
BEGIN
DECLARE sex VARCHARACTER(12);
DECLARE done int DEFAULT 0;
-- 游标的定义
DECLARE c_person CURSOR for select gender from emp;
-- 捕获系统抛出的not found错误,如果捕获到,将done设置为1 相当于try异常
DECLARE CONTINUE handler for not FOUND set done = 1;
set sum = 0;
-- 打开游标
OPEN c_person;
www:LOOP
-- 使用游标
FETCH c_person into sex;
-- 如果发生异常
if done = 1 THEN
leave www;
end if;
IF sex = '男' then
set sum = sum + 1;
end if;
end LOOP;
-- 关闭游标
close c_person;
END
-- 调用
set @sum = 0;
call pa(@sum);
select @sum;
更多推荐
所有评论(0)