mysql 游标查询

引用:http://blog.csdn.net/a600423444/article/details/6424360

 1203人阅读 评论(0) 收藏 举报

 

[c-sharp] view plaincopy
  1. CREATE PROCEDURE update_pointer()  
  2. BEGIN  
  3.     /* 定义变量一 */  
  4.     DECLARE  total float;  
  5.     DECLARE  uid int;  
  6.     DECLARE  _done int default 0;  
  7.     DECLARE currentP int default 0;  
  8.     DECLARE firstid int;  
  9.     DECLARE secondid int;  
  10.     DECLARE parentId VARCHAR(16);  
  11.     DECLARE first_jj_yy int default 0;#第一程基建燃油费  
  12.     DECLARE second_jj_ry int default 0;#第二程基建燃油费  
  13.     /* 定义光标 */  
  14.     DECLARE _Cur CURSOR FOR  
  15.             SELECT aliTotal,ordUID,flightId,backFliId FROM fightorder WHERE ordState=4;#主订单查询  
  16.     DECLARE _CurRex CURSOR FOR  
  17.         SELECT oeactTotal,ordId FROM flight_orderex WHERE oeState=4;  
  18.       
  19.       
  20.     DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET _done = 1;#错误定义,标记循环结束  
  21.       
  22.     /* 打开光标 */  
  23.     OPEN _Cur;  
  24.          /* 循环执行 */  
  25.          REPEAT  
  26.             FETCH _Cur INTO total, uid, firstid, secondid;  
  27.             IF NOT _done THEN  
  28.                 IF total>0 AND uid>0 THEN  
  29.                     SELECT fcn+fyq into first_jj_yy FROM flightlist WHERE flightId=firstid limit 1;  
  30.                     IF secondid>0 THEN  
  31.                         SELECT fcn+fyq into second_jj_ry FROM flightlist WHERE flightId=firstid limit 1;  
  32.                     END IF;  
  33.                     UPDATE sysusers SET integral=(integral+total)-(second_jj_ry+first_jj_yy) WHERE sysusers.UID=uid;  
  34.                 END IF;  
  35.             END IF;  
  36.          UNTIL _done END REPEAT; #当_done=1时退出被循  
  37.     /*关闭光标*/  
  38.     CLOSE _Cur;  
  39.     SET _done = 0;#只有定义为0,新的循环才能继续。  
  40.     OPEN _CurRex;  
  41.     REPEAT  
  42.         FETCH _CurRex INTO total,parentId;  
  43.         IF NOT _done THEN  
  44.             #IF total > 0 THEN  
  45.                 SELECT ordUID into uid FROM fightorder WHERE fightorder.alipayNo=parentId limit 1;#查询用户UID  
  46.                 #INSERT INTO test values(total,uid);  
  47.                 UPDATE sysusers SET integral=integral+total WHERE sysusers.UID=uid;#新增积分  
  48.             #END IF;  
  49.         END IF;  
  50.     UNTIL _done END REPEAT;  
  51.     CLOSE _CurRex;  
  52. END  
 

 

posted @ 2013-05-17 14:01  镇水古月  阅读(394)  评论(0编辑  收藏  举报