全部博文(471)
分类: Mysql/postgreSQL
2012-03-19 21:37:38
游标是系统为用户开设的一个,存放SQL语句的执行结果。每个游标区都有一个名字。用户可以用SQL语句逐一从游标中获取记录,并赋给主变量,交由主语言进一步处理。
概述:
游标提供了一种对从表中检索出的数据进行操作的灵活手段,就本质而言,游标实际上是一种能从包括多条数据记录的结果集中每次提取一条记录的机制。游标总是与一条SQL 选择语句相关联因为游标由结果集(可以是零条、一条或由相关的选择语句检索出的多条记录)和结果集中指向特定记录的游标位置组成。当决定对结果集进行处理时,必须声明一个指向该结果集的游标。如果曾经用 C 语言写过对文件进行处理的程序,那么游标就像您打开文件所得到的文件句柄一样,只要文件打开成功,该文件句柄就可代表该文件。对于游标而言,其道理是相同的。可见游标能够实现按与传统程序读取平面文件类似的方式处理来自基础表的结果集,从而把表中数据以平面文件的形式呈现给程序。
游标实现了对mysql的存储过程中循环读取数据表中的对象的过程。
游标的特性:
Ø READ ONLY 只读,只能取值而不能赋值;
Ø NOT SCROOLABLE 不可回滚,只能顺序读取;
Ø ASENSITIVE 敏感,不能在已经打开游标的表上执行update事务;
1.声明光标
MySQL中使用DECLARE关键字来声明光标。其语法的基本形式如下:
1 DECLARE cursor_name CURSOR FOR select_statement ;
其中,cursor_name参数表示光标的名称;select_statement参数表示SELECT语句的内容。
【示例14-8】下面声明一个名为cur_employee的光标。代码如下:
DECLARE cur_employee CURSOR FOR SELECT name, age FROM employee ;
上面的示例中,光标的名称为cur_employee;SELECT语句部分是从employee表中查询出name和age字段的值。
2.打开光标
MySQL中使用OPEN关键字来打开光标。其语法的基本形式如下:
2 OPEN cursor_name ;
其中,cursor_name参数表示光标的名称。
【示例14-9】下面打开一个名为cur_employee的光标,代码如下:
3 OPEN cur_employee ;
3.使用光标
MySQL中使用FETCH关键字来使用光标。其语法的基本形式如下:
4 FETCH cur_employee INTO var_name[,var_name…] ;
其中,cursor_name参数表示光标的名称;var_name参数表示将光标中的SELECT语句查询出来的信息存入该参数中。var_name必须在声明光标之前就定义好。
【示例14-10】下面使用一个名为cur_employee的光标。将查询出来的数据存入emp_name和emp_age这两个变量中,代码如下:
5 FETCH cur_employee INTO emp_name, emp_age ;
上面的示例中,将光标cur_employee中SELECT语句查询出来的信息存入emp_name和emp_age中。emp_name和emp_age必须在前面已经定义。
4.关闭光标
MySQL中使用CLOSE关键字来关闭光标。其语法的基本形式如下:
6 CLOSE cursor_name ;
其中,cursor_name参数表示光标的名称。
【示例14-11】下面关闭一个名为cur_employee的光标。代码如下:
7 CLOSE cur_employee ;
上面的示例中,关闭了这个名称为cur_employee的光标。关闭之后就不能使用FETCH来使用光标了。
技巧:如果存储过程或函数中执行SELECT语句,并且SELECT语句会查询出多条记录。这种情况最好使用光标来逐条读取记录。光标必须在处理程序之前且在变量和条件之后声明。而且,光标使用完后一定要关闭。
点击(此处)折叠或打开