当前位置:嗨网首页>书籍在线阅读

13-光标的使用

  
选择背景色: 黄橙 洋红 淡粉 水蓝 草绿 白色 选择字体: 宋体 黑体 微软雅黑 楷体 选择字体大小: 恢复默认

9.4.5 光标的使用

在存储过程或自定义函数中的查询可能返回多条记录,可以使用光标来逐条读取查询结果集中的记录。光标在很多其他的书籍中被称为游标。光标的使用包括光标的声明、打开光标、使用光标和关闭光标。需要注意的是,光标必须在处理程序之前声明,在变量和条件之后声明。

1.声明光标

MySQL中使用DECLARE来声明光标,语法如下。

DECLARE cursor_name CURSOR FOR select_statement

其中,cursor_name为光标的名称;select_statement为查询语句,返回一个结果集,声明的光标基于该结果集进行操作。可以在子程序中定义多个光标,但是一个块中的每一个光标必须有唯一的名称。

【范例9-22】

声明一个cursor_emp的光标,代码如下。

declare cursor_emp cursor for select empno,empname from emp

其中,cursor_emp为光标名称,SELECT语句从emp表中查询empno和empname两列的数据。

2.打开光标

OPEN cursor_name

其中,cursor_name为先前声明的光标。

【范例9-23】

打开cursor_emp的光标,代码如下。

Open cursor_emp;

该示例打开先前声明的cursor_emp光标。

3.使用光标

MySQL中使用FETCH语句来操作和使用光标,语法如下。

FETCH cursor_name INTO var_name [, var_name] ...

其中,cursor_name为先前声明并打开的光标名称;var_name参数表示将光标声明中的SELECT语句中的查询信息存储在该参数中;var_name必须在光标声明前定义好。

【范例9-24】

使用名称为cursor_emp的光标,将查询得到的数据存储在变量e_no、e_name中,代码如下。

Fetch cursor_emp into e_no,e_name;

该示例使用cursor_emp,将SELECT语句中查询得到的empno、empname存储在变量e_no、e_name中。

4.关闭光标

CLOSE cursor_name

MySQL中使用CLOSE关键字来关闭光标,cursor_name为声明并打开的光标。如果未被明确地关闭,光标在它被声明的复合语句的末尾被关闭。

【范例9-25】

关闭cursor_emp光标,代码如下。

Close cursor_emp;

提示 MySQL中的光标只能在存储过程和自定义函数中使用。