查询语句可能查询出多条记录,在存储过程和函数中使用光标来逐条读取查询结果集中的记录。有些书上将光标称为游标。光标的使用包括声明光标、打开光标、使用光标和关闭光标。光标必须声明在处理程序之前,并且声明在变量和条件之后。光标可以类比为数组内部中的循环指针。


    目前,mysql中的光标只能在存储过程或函数中使用。




1.声明光标


MySQL中使用DECLARE关键字来声明光标。其语法的基本形式如下:


DECLARE cursor_name CURSOR FOR select_statement ;


     其中,cursor_name参数表示光标的名称;select_statement参数表示SELECT语句的内容,返回一个用于创建光标的结果集


下面声明一个名为cur_employee的光标。代码如下:


DECLARE cur_employee CURSOR FOR SELECT name, age FROM employee ;


     上面的示例中,光标的名称为cur_employee;SELECT语句部分是从employee表中查询出name和age字段的值。




2.打开光标


MySQL中使用OPEN关键字来打开光标。其语法的基本形式如下:


OPEN  cursor_name ;


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


下面打开一个名为cur_employee的光标,代码如下:


OPEN  cur_employee ;




3.使用光标


MySQL中使用FETCH关键字来使用光标。其语法的基本形式如下:


FETCH cur_employee INTO var_name[,var_name…] ;


 其中,cursor_name参数表示光标的名称;var_name参数表示将光标中的SELECT语句查询出来的信息存入该参数中。var_name必须在声明光标之前就定义好。


下面使用一个名为cur_employee的光标。将查询出来的数据存入emp_name和emp_age这两个变量中,代码如下:


FETCH  cur_employee INTO emp_name, emp_age ;


上面的示例中,将光标cur_employee中SELECT语句查询出来的信息存入emp_name和emp_age中。emp_name和emp_age必须在前面已经定义。




4.关闭光标


MySQL中使用CLOSE关键字来关闭光标。其语法的基本形式如下:


CLOSE  cursor_name ;


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


示例:下面关闭一个名为cur_employee的光标。代码如下:


CLOSE  cur_employee ;


上面的示例中,关闭了这个名称为cur_employee的光标。关闭之后就不能使用FETCH来使用光标了。