本文来说下mysql存储过程中光标的使用
光标的基本概念
查询语句可能返回多条记录,如果数据集非常大,需要在存储过程中使用光标来逐条读取查询结果集中的记录。光标必须在声明处理程序之前被声明,并且变量和条件在光标之前。
声明光标
语法格式如下:declare cursor_name cursor for select_statement
cursor_name:光标名;select_statement:select语句的内容,返回一个用于创建光标的结果集。
declare cursor_fruit cursor for select fname,fprice from fruits;
打开光标
语法格式如下:open cursor_name(光标名称)
open cursor_fruit;
使用光标
语法格式如下:fetch cursor_name into var_name [,var_name]…{参数名称}
var_name:参数表示光标中的select语句查询出来的信息存入该参数中,必须在声明光标之前定义好。
fetch cursor_fruit into fruit_name,fruit_price;
关闭光标
/*close cursor_name */
close cursor_fruit;
光标使用实例
在 MySQL 中,存储过程或函数中的查询有时会返回多条记录,而使用简单的 SELECT 语句,没有办法得到第一行、下一行或前十行的数据,这时可以使用游标来逐条读取查询结果集中的记录。游标在部分资料中也被称为光标。
关系数据库管理系统实质是面向集合的,在 MySQL 中并没有一种描述表中单一记录的表达形式,除非使用 WHERE 子句来限制只有一条记录被选中。所以有时我们必须借助于游标来进行单条记录的数据处理
一般通过游标定位到结果集的某一行进行数据修改。
结果集是符合 SQL 语句的所有记录的集合。
个人理解游标就是一个标识,用来标识数据取到了什么地方,如果你了解编程语言,可以把他理解成数组中的下标。
不像多数 DBMS,MySQL 游标只能用于存储过程和函数。
程序实例
CREATE DEFINER=`tmis`@`%` PROCEDURE `get_employee_info`()
begin
declare employeeCode varchar(30) default "";
declare employeeName varchar(30) default "";
-- 声明光标
declare cursor_employee cursor for
select employee_code,employee_name from employee_info;
-- 打开光标
open cursor_employee;
-- 使用循环遍历得到用户的编码和名称信息
while(employeeCode is not null)
do
-- 使用光标
fetch cursor_employee into employeeCode,employeeName;
select employeeCode;
select employeeName;
end while;
-- 关闭光标
close cursor_employee;
end
本文小结
本文详细介绍了mysql中光标相关的知识与内容,并且编写了一个对应光标使用的实例