数据库 插入更新表内容的存储过程
SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO -- ============================================= -- Author: <xxxx> -- Create date: <2011-03-15> -- Description: <道具系统日报表统计> -- ============================================= ALTER PROCEDURE [dbo].[sp_PropsReport_DaySync] AS BEGIN --循环读取TbApps里的数据 --声明游标 DECLARE cursor_App CURSOR FOR SELECT Id FROM TbApps --打开游标 OPEN cursor_App DECLARE @AppId int DECLARE @ReportDay VARCHAR(10), @OrderCount INT, @ActAmt INT,@PersonCount INT SELECT @ReportDay=CONVERT(VARCHAR(10),DATEADD(dd, -1, GETDATE()),120) --统计TbPropsOrder里的Status=2的所有已扣费数据 FETCH NEXT FROM cursor_App INTO @AppId WHILE @@fetch_status=0 BEGIN SET @ActAmt=0 SET @OrderCount=0 SET @PersonCount=0 SELECT @ActAmt=ISNULL(SUM(ActPay),0), @OrderCount=COUNT(1),@PersonCount=COUNT(DISTINCT SndaId) FROM TbPropsOrder(NOLOCK) WHERE AppId=@AppId AND Status=2 AND LogTime>=@ReportDay AND LogTime<CONVERT(VARCHAR(10),GETDATE(),120) IF EXISTS(SELECT 1 FROM TbPropsOrderDayReport(NOLOCK) WHERE ReportDay=@ReportDay AND AppId=@AppId) UPDATE TbPropsOrderDayReport SET OrderCount=@OrderCount, ActAmt=@ActAmt ,PersonCount = @PersonCount WHERE ReportDay=@ReportDay AND AppId=@AppId ELSE INSERT TbPropsOrderDayReport(ReportDay, OrderCount, ActAmt, AppId,PersonCount) VALUES(@ReportDay, @OrderCount, @ActAmt, @AppId,@PersonCount) FETCH NEXT FROM cursor_App INTO @AppId END --关闭游标 CLOSE cursor_App --释放游标 DEALLOCATE cursor_App END GO SET ANSI_NULLS OFF GO SET QUOTED_IDENTIFIER OFF GO
你们的评论、反馈,及对你们有所用,是我整理材料和博文写作的最大的鼓励和唯一动力。欢迎讨论和关注!
没有整理与归纳的知识,一文不值!高度概括与梳理的知识,才是自己真正的知识与技能。 永远不要让自己的自由、好奇、充满创造力的想法被现实的框架所束缚,让创造力自由成长吧! 多花时间,关心他(她)人,正如别人所关心你的。理想的腾飞与实现,没有别人的支持与帮助,是万万不能的。
没有整理与归纳的知识,一文不值!高度概括与梳理的知识,才是自己真正的知识与技能。 永远不要让自己的自由、好奇、充满创造力的想法被现实的框架所束缚,让创造力自由成长吧! 多花时间,关心他(她)人,正如别人所关心你的。理想的腾飞与实现,没有别人的支持与帮助,是万万不能的。