zoukankan      html  css  js  c++  java
  • Sql Server 游标例子笔记

    create PROCEDURE total_mySaleDuty
    as
    BEGIN
    	 DECLARE @a int,@error int    
       DECLARE @b int,@errorb int    
    	 DECLARE @c_dutyId int;
    	 DECLARE @c_dutyName VARCHAR(100);
    	 DECLARE @c_proxyCount int;
    	 DECLARE @c_saleCount int;
    	 DECLARE @c_buyCount int;
    	 DECLARE @c_count int;
    	 DECLARE @c_userId int;
    
    	 set @b=1;
       set @errorb=0;
    	 set @a=1;
       set @error=0;
    
       DECLARE findManager_cur CURSOR for 
    			SELECT userId FROM QPNewLobbyDB.dbo.qzmajiang_duty WHERE dutyLevel = 1
    			
    			OPEN findManager_cur FETCH next from findManager_cur into @c_userId;
    					while @@FETCH_STATUS = 0 
    							begin     
    									DECLARE findSaleDuty_cur CURSOR for 
    										 SELECT
    												d.dutyId,
    												MAX (d.dutyName) AS dutyName,
    												COUNT (DISTINCT u.userId) AS proxyCount,
    												SUM (CASE WHEN l.typeId = 1 THEN l.roomCardCount ELSE 0 END) saleCount,
    												SUM (CASE WHEN l.typeId = 2 THEN c.currentPrice ELSE 0 END) buyCount
    										 FROM QPNewLobbyDB.dbo.qzmajiang_duty d
    										 LEFT JOIN QPNewLobbyDB.dbo.qzmajiang_proxy_user u ON d.dutyId = u.dutyId
    										 LEFT JOIN QPNewLobbyDB.dbo.qzmajiang_proxy_log l ON u.userId = l.fromUserId
    										 AND DATEDIFF(MONTH,l.createTime,GETDATE()) = 0
    										 LEFT JOIN QPNewLobbyDB.dbo.qzmajiang_roomcard_config c ON l.configId = c.configId
    										 WHERE parentDutyId = (SELECT dutyId FROM QPNewLobbyDB.dbo.qzmajiang_duty WHERE userId =@c_userId AND dutyLevel = 1)
    										 GROUP BY d.dutyId 
    
    										 OPEN findSaleDuty_cur FETCH next from findSaleDuty_cur into @c_dutyId,@c_dutyName,@c_proxyCount,@c_saleCount,@c_buyCount;
    											 while @@FETCH_STATUS = 0 
    													begin       
    
    														select @c_count = count(1) from QPNewLobbyDB.dbo.qzmajiang_history_total where dutyId = @c_dutyId and DATEDIFF(MONTH, createTime, GETDATE())= 0  ;
    														
    														if(@c_count=0)  
    															begin 
    																insert into QPNewLobbyDB.dbo.qzmajiang_history_total values(@c_dutyId,@c_dutyName,@c_proxyCount,@c_saleCount,@c_buyCount,GETDATE())
    															end
    														else  
    															begin  
    																	update QPNewLobbyDB.dbo.qzmajiang_history_total set proxyCount=@c_proxyCount,saleCount=@c_saleCount,buyCount=@c_buyCount,createTime=GETDATE()
    																	where dutyId=@c_dutyId and DATEDIFF(MONTH, createTime, GETDATE())= 0
    															end  
    														
    														set @a=@a+1
    														set @error= @error + @@ERROR 
    														fetch next from findSaleDuty_cur into @c_dutyId,@c_dutyName,@c_proxyCount,@c_saleCount,@c_buyCount
    
    													end
    											close findSaleDuty_cur  
    										deallocate findSaleDuty_cur
    
    									set @b=@b+1
    									set @errorb= @errorb + @@ERROR 
    									fetch next from findManager_cur into  @c_userId
    							end
    			close findManager_cur  
    	deallocate findManager_cur
    END
    	
    
  • 相关阅读:
    Java小案例——对字符串进行加密解密
    Java基础——使用三元运算符判断一个数的奇偶性
    Java基础——字母大小写转换
    多线程实现——新龟兔赛跑
    编程面试题之——简答题(持续更新...)
    多线程之——共享数据
    多线程之——线程的状态
    Android 8.0 Oreo介绍
    Android 7.0 Nougat介绍
    Android 6.0 Marshmallow介绍
  • 原文地址:https://www.cnblogs.com/wangfajun/p/6805866.html
Copyright © 2011-2022 走看看