Heim >Datenbank >MySQL-Tutorial >Mysql那些事儿之(十四)光标的使用_MySQL

Mysql那些事儿之(十四)光标的使用_MySQL

WBOY
WBOYOriginal
2016-06-02 08:49:501039Durchsuche

bitsCN.com


Mysql那些事儿之(十四)光标的使用

 

相关链接:

Mysql那些事儿之(一)mysql的安装

http:///database/201210/162314.html;

Mysql那些事儿之(二)有关数据库的操作

http:///database/201210/162315.html;

Mysql那些事儿之(三)有关数据表的操作

http:///database/201210/162316.html;

Mysql那些事儿之(四)数据表数据查询操作

http:///database/201210/162317.html;

Mysql那些事儿之(五)操作时间

http:///database/201210/162318.html;

Mysql那些事儿之(六)字符串模式匹配

http:///database/201210/163969.html;

Mysql那些事儿之(七)深入select查询

http:///database/201210/163970.html;

Mysql那些事儿之(八)索引

http:///database/201210/163971.html;

Mysql那些事儿之(九)常用的函数

http:///database/201210/164229.html;

Mysql那些事儿之(十)触发器一

http:///database/201210/164516.html;

Mysql那些事儿之(十一)触发器二

http:///database/201210/164766.html;

Mysql那些事儿之(十二)存储过程

http:///database/201210/164795.html;

Mysql那些事儿之(十三)变量、条件的使用

http:///database/201211/165662.html

 

在存储过程中可以使用光标对结果集进行循环处理,光标的使用包括光标的声明、open、fetch、close。    

语法如下:

Sql代码  

--声明光标  

DECLARE cur_name CURSOR FOR select_statement  

--open光标  

OPEN cursor_name  

--FETCH 光标  

FETCH cursor_name INTO var_name [,var_name....]  

--close光标  

CLOSE cursor_name  

举例说明:

Sql代码  

delimiter $$  --将;结束符改变为$$  

--创建存储过程  

CREATE PROCEDURE payment_amount()  

BEGIN  

  ---声明变量  

  DECLARE i_staff_id int;  

  DECLARE d_amount decimal(5,2);  

  ---声明一个光标,获取表payment里的staff_id,amount列的值。  

  DECLARE cur_payment cursor for select staff_id,amount from payment;  

  ---条件处理,判断循环结束的条件是 捕获NOT FOUND条件。  

 ---当fecth 找不到下一条记录时,就会关闭光标,退出过程。  

  DECLARE EXIT HANDLER FOR NOT FOUND CLOSE cur_payment;  

  

  set @x1 = 0;  

  set @x2 = 0;  

  ----打开光标  

  OPEN cur_payment;  

    

  REPEAT  

    FETCH cur_payment INTO i_staff_id,d_amount;  

      if i_staff_id = 2 then  

        set @x1 = @x1 + d_amount;  

      else  

        set @x2 = @x2 + d_amount;  

      end if;  

  UNTIL 0 END REPEAT;  

  

  CLOSE cur_payment;  

END;  

$$  

  

delimiter ;  

 DECLARE定义是有顺序的:变量和条件必须放在前面、然后是光标的声明、最后才可以是 处理程序的声明。

 

bitsCN.com
Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn