游标简介
截止到现在为止,我们只能使用SELECT ... INTO ...
语句将一条记录的各个列值赋值到多个变量里,比如在前边的get_score_data
存储过程里有这样的语句:
SELECT MAX(score), MIN(score), AVG(score) FROM student_score WHERE subject = s INTO max_score, min_score, avg_score;
但是如果某个查询语句的结果集中有多条记录的话,我们就无法把它们赋值给某些变量了~ 所以为了方便我们去访问这些有多条记录的结果集,MySQL
中引入了游标
的概念。
我们下边以对t1
表的查询为例来介绍一下游标
,比如我们有这样一个查询:
mysql> SELECT m1, n1 FROM t1;
+------+------+
| m1 | n1 |
+------+------+
| 1 | a |
| 2 | b |
| 3 | c |
| 4 | d |
+------+------+
4 rows in set (0.00 sec)
mysql>
这个SELECT m1, n1 FROM t1
查询语句对应的结果集有4条记录,游标
其实就是用来标记结果集中我们正在访问的某一条记录。初始状态下它标记结果集中的第一条记录,就像这样:
我们可以根据这个游标
取出它对应记录的信息,随后再移动游标,让它执向下一条记录。游标
既可以用在存储函数中,也可以用在存储过程中,我们下边以存储过程为例来说明游标
的使用方式,它的使用大致分成这么四个步骤:
- 创建游标
- 打开游标
- 通过游标访问记录
- 关闭游标
下边来详细介绍这几个步骤的详细情况。
创建游标
在创建游标的时候,需要指定一下与游标
关联的查询语句,语法如下:
DECLARE 游标名称 CURSOR FOR 查询语句;