Heim  >  Artikel  >  Datenbank  >  MySQL游标的使用笔记大全

MySQL游标的使用笔记大全

WBOY
WBOYOriginal
2016-06-07 14:51:41989Durchsuche

以下的文章主要介绍的是MySQL游标的使用笔记,其可以用在存储过程的SQL语句,其主要类型主要有以下几种,以下就是对其详细介绍,相信如果你掌握了这项技术,会在以后的学习或是工作中带来很大的帮助。 1、 无返回结果语句,如:INSERT,UPDATE,DROP, DELETE等

  以下的文章主要介绍的是MySQL游标的使用笔记,其可以用在存储过程的SQL语句,其主要类型主要有以下几种,以下就是对其详细介绍,相信如果你掌握了这项技术,会在以后的学习或是工作中带来很大的帮助。

  1、 无返回结果语句,如:INSERT,UPDATE,DROP, DELETE等

  2、 select语句返回单行变量并可传给本地变量(select ..into)

  3、 返回多行结果集的select语句,并可使用MySQL游标循环处理

  注意,存储过程返回的多行结果集,可以被客户端程序(如php)所接收,但要在一个存储过程中接收另一个存储过程的结果集是不可能的,一般解决办法是存入临时表供其它过程共用

  4、 prepare语句

  以下主要讲述游标及prepare部分

  游标

  定义

  DECLARE cursor_name CURSOR FOR SELECT_statement; 

  游标操作

  OPEN 打开游标

  OPEN cursor_name; 

  FETCH 获取游标当前指针的记录,并传给指定变量列表,注意变量数必须与MySQL游标返回的字段数一致,要获得多行数据,使用循环语句去执行FETCH

  FETCH cursor_name INTO variable list; 

  CLOSE关闭游标

  CLOSE cursor_name ; 

  注意:MySQL的游标是向前只读的,也就是说,你只能顺序地从开始往后读取结果集,不能从后往前,也不能直接跳到中间的记录.

  一个完整的例子:

  定义本地变量

  DECLARE o varchar(128); 

  定义游标

  DECLARE ordernumbers CURSOR  
  FOR  
  SELECT callee_name FROM account_tbl where acct_timeduration=10800;  
  DECLARE CONTINUE HANDLER FOR NOT FOUND SET no_more_departments=1;  
  SET no_more_departments=0;  

  打开游标

  OPEN ordernumbers; 

  循环所有的行

  REPEAT  
  -- Get order number  
  FETCH ordernumbers INTO o;  
  update account set allMoneyallMoney=allMoney+72,lastMonthConsumelastMonthConsume=lastMonthConsume-72 where NumTg=@o;  

  循环结束

  UNTIL no_more_departments  
  END REPEAT; 

  关闭游标

  CLOSE ordernumbers; 

  以上的相关内容就是对MySQL游标使用笔记的介绍,望你能有所收获。

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