数据库 插入更新表内容的存储过程

简介:

gooliugle 原文 插入更新表内容的存储过程

复制代码
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
复制代码

 

没有整理与归纳的知识,一文不值!高度概括与梳理的知识,才是自己真正的知识与技能。 永远不要让自己的自由、好奇、充满创造力的想法被现实的框架所束缚,让创造力自由成长吧! 多花时间,关心他(她)人,正如别人所关心你的。理想的腾飞与实现,没有别人的支持与帮助,是万万不能的。

    本文转自wenglabs博客园博客,原文链接:http://www.cnblogs.com/arxive/p/5959069.html ,如需转载请自行联系原作者

相关文章
|
1月前
|
存储 SQL 关系型数据库
【MySQL 数据库】9、存储过程
【MySQL 数据库】9、存储过程
205 0
|
2月前
|
存储 数据库
Navicate 如何导出数据库中的存储过程、事件、视图等?
Navicate 如何导出数据库中的存储过程、事件、视图等?
|
1月前
|
SQL 关系型数据库 MySQL
【MySQL】— —熟练掌握用SQL语句实现数据库和基本表的创建。熟练掌握MySQL的安装、客户端登录方法;熟练掌握MySQL的编码、数据类型等基础知识;掌握实体完整性的定义和维护方法、掌握参照完整性
【MySQL】— —熟练掌握用SQL语句实现数据库和基本表的创建。熟练掌握MySQL的安装、客户端登录方法;熟练掌握MySQL的编码、数据类型等基础知识;掌握实体完整性的定义和维护方法、掌握参照完整性
101 1
|
3月前
|
存储 Java 数据库
JAVAEE框架数据库技术之13_oracle 之PLSQL技术及存储过程和函数(二)
JAVAEE框架数据库技术之13_oracle 之PLSQL技术及存储过程和函数
38 0
|
1月前
|
存储 SQL 数据挖掘
视图、触发器和存储过程:提升数据库功能
视图、触发器和存储过程:提升数据库功能
19 1
|
1月前
|
SQL 关系型数据库 MySQL
【MySQL】——用SQL语句实现数据库和基本表的创建
【MySQL】——用SQL语句实现数据库和基本表的创建
63 3
【MySQL】——用SQL语句实现数据库和基本表的创建
|
2月前
|
XML Java 数据库连接
|
2月前
|
存储 数据库
【数据库】分支与循环&函数&存储过程
【数据库】分支与循环&函数&存储过程
22 1
|
2月前
|
存储 Linux 数据库
期末速成数据库极简版【存储过程】(5)
期末速成数据库极简版【存储过程】(5)
17 0
|
2月前
|
关系型数据库 MySQL 数据库
MySQL员工打卡日志表——数据库练习
MySQL员工打卡日志表——数据库练习
136 0