MYSQL 游标使用示例

mysql使用游标示例 备忘

BEGIN 

	DECLARE  receiverID INT;
	DECLARE existNum INT;
	DECLARE done INT DEFAULT 0;

	#mysql 不支持动态游标,so...
	declare UserID_cur CURSOR FOR select UserID FROM zhijia_gfamily_t_user;
	declare DeveloperID_cur CURSOR FOR select DeveloperID FROM zhijia_gfamily_t_developer;
	declare MerchantID_cur CURSOR FOR select MerchantID FROM zhijia_gfamily_t_equipmentmerchant;
	#定义结束循环标识,不这样可能会报错(1329 - No data - zero rows fetched, selected, or processed)
	DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1;

			CASE role
				WHEN 1 THEN 
					OPEN UserID_cur;#接收者为所有玩家
					fetchSeqLoop1:Loop 
						IF (done =1) THEN LEAVE fetchSeqLoop1; END IF;   
            FETCH UserID_cur INTO receiverID; 
						SELECT COUNT(*) INTO existNum from zhijia_gfamily_t_messagereceivemapping m where  m.ReceiverID = receiverID and m.MessageID = MessageID and m.ReceiveRole = role;
						#没有相同的信息才插入
						IF (existNum=0) THEN 
						INSERT INTO zhijia_gfamily_t_messagereceivemapping (ReceiveRole,ReceiverID,ReadFlag,MessageID) VALUES (role,receiverID,0,MessageID); 	
						END IF;
					end loop fetchSeqLoop1;				
				CLOSE UserID_cur;

				WHEN 2 THEN 
					OPEN DeveloperID_cur;#接收者为所有开发者
					fetchSeqLoop2:Loop   		
						IF (done =1) THEN LEAVE fetchSeqLoop2; END IF; 	 		
            FETCH DeveloperID_cur INTO receiverID; 
						SELECT COUNT(*) INTO existNum from zhijia_gfamily_t_messagereceivemapping m where  m.ReceiverID = receiverID and m.MessageID = MessageID and m.ReceiveRole = role;
						IF (existNum=0) THEN 
						INSERT INTO zhijia_gfamily_t_messagereceivemapping (ReceiveRole,ReceiverID,ReadFlag,MessageID) VALUES (role,receiverID,0,MessageID); 	
						END IF;
					end loop fetchSeqLoop2; 
					CLOSE DeveloperID_cur;


				WHEN 3 THEN 
					OPEN MerchantID_cur;#接收者为所有设备商
					fetchSeqLoop3:Loop  
						IF (done =1) THEN LEAVE fetchSeqLoop3; END IF; 	
            FETCH MerchantID_cur INTO receiverID; 
						SELECT COUNT(*) INTO existNum from zhijia_gfamily_t_messagereceivemapping m where  m.ReceiverID = receiverID and m.MessageID = MessageID and m.ReceiveRole = role;
						IF (existNum=0) THEN 
						INSERT INTO zhijia_gfamily_t_messagereceivemapping (ReceiveRole,ReceiverID,ReadFlag,MessageID) VALUES (role,receiverID,0,MessageID); 	
						END IF;
					end loop fetchSeqLoop3;  
					CLOSE MerchantID_cur;
			END CASE;		
END


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值