MySQL

MySQL 知识量:16 - 40 - 165

11.2 使用游标><

创建游标- 11.2.1 -

使用declare语句来创建游标。declare命名游标并定义相应的select语句,根据需要还可以使用where及其他子句。

例如:创建一个查询学生信息的游标(必须在存储过程中创建)。

delimiter //
create procedure show_s()
begin
declare newStudent cursor    /*定义游标newStudent*/
for
select * from student;
end //
delimiter ;

以上SQL语句中,使用declare+游标名+cursor的形式定义游标,for关键字用于连接具体的select语句。

使用游标- 11.2.2 -

1、使用open语句打开游标。例如:打开游标newStudent。

open newStudent;

2、使用close语句关闭游标。例如:关闭游标newStudent。

close newStudent;

close释放游标使用的所有内部内存和资源,因此,在每个游标不再使用时都应该关闭。如果不明确关闭游标,MySQL也会在到达end语句时自动关闭它,即隐含关闭,但是手动关闭是个好习惯。

在游标关闭后,如果没有重新打开,是不能使用它的。但是,声明过的游标不需要再次声明,使用open语句打开它就可以了。

3、以下是一个简单的游标应用示例:

delimiter //
create procedure showName()  /*定义存储过程showName*/
begin
declare res varchar(255);    /*定义变量res*/
declare theName cursor       /*定义游标theName*/
for
select name from student;
open theName;                /*打开游标*/
fetch theName into res;      /*取出游标第一行name列的值赋给res*/
close theName;               /*关闭游标*/
select res;
end //
delimiter ;

以上语句中,在游标中获取数据,使用了fetch语句,这里将检索当前行的name列(默认从第一行开始),并把结果通过into关键字保存到变量res中。

调用以上存储过程:

call showName;

结果为:

+-------+
| res   |
+-------+
| Susan |
+-------+