SQL存储过程 (时间段,循环,事务)

复制代码
USE [SSIS_ExtractData]
GO
/****** Object: StoredProcedure [dbo].[sp_AntifakeAnalysis] Script Date: 05/05/2017 16:01:52 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author:    Yaojl
-- Create date: <Create Date,,2017-03-16>
-- Description:    <Description,,扫码首次多次分析>
-- =============================================
ALTER PROCEDURE [dbo].[sp_AntifakeAnalysis]
AS 
BEGIN
BEGIN TRY
BEGIN TRAN
IF EXISTS ( SELECT ID
FROM dbo.Rep_AntifakeAnalysis ) 
BEGIN
TRUNCATE TABLE dbo.Rep_AntifakeAnalysis
END
--往前推6个月
DECLARE @temp DATETIME = CONVERT(DATETIME, CONVERT(VARCHAR(7), DATEADD(MONTH, -5, GETDATE()), 120) + '-01');
DECLARE @first INT;
DECLARE @repeat INT;
DECLARE @total INT;
WHILE @temp <=getdate()
BEGIN

---全行业
SELECT @first = COUNT(FFAntiFakeCode)
FROM CRM_AntiFakeQRec
WHERE FSystime >= @temp
AND FSystime < DATEADD(MONTH, 1, @temp)
AND FsearchNum = 1

SELECT @repeat = COUNT(FFAntiFakeCode)
FROM CRM_AntiFakeQRec
WHERE FSystime >= @temp
AND FSystime < DATEADD(MONTH, 1, @temp)
AND FsearchNum > 1

SET @total = @first + @repeat;


INSERT INTO dbo.Rep_AntifakeAnalysis
( DataNum ,
FirstNum ,
RepeatNum ,
TotalNum
)
VALUES ( 
--CONVERT(varchar(7), @temp, 111) , -- DataNum - nvarchar(50)
Datename(month,@temp)+'',
@first , -- FirstNum - int
@repeat , -- RepearNum - int
@total -- TotalNum - int
)

------分行业

-- --创建临时表
-- DECLARE @tradeID INT;
--if not object_id('Tempdb..#A') is null
-- drop table #A

--Create table #A([TradeID] nvarchar(100))
--Insert #A SELECT TradeID FROM dbo.CRM_AntiFakeQRec GROUP BY TradeID
--WHILE EXISTS(SELECT TradeID FROM #A)
--BEGIN
--SET ROWCOUNT 1
--SELECT @tradeID=TradeID FROM #A
--SET ROWCOUNT 0
--DELETE FROM #A WHERE TradeID=@tradeID
--PRINT @tradeID

-- SELECT @first = COUNT(FFAntiFakeCode)
-- FROM CRM_AntiFakeQRec
-- WHERE FSystime >= @temp
-- AND FSystime < DATEADD(MONTH, 1, @temp)
-- AND FsearchNum = 1 AND TradeID=@tradeID

-- SELECT @repeat = COUNT(FFAntiFakeCode)
-- FROM CRM_AntiFakeQRec
-- WHERE FSystime >= @temp
-- AND FSystime < DATEADD(MONTH, 1, @temp)
-- AND FsearchNum > 1 AND TradeID=@tradeID

-- SET @total = @first + @repeat;


-- INSERT INTO dbo.Rep_AntifakeAnalysis
-- ( DataNum ,
-- FirstNum ,
-- RepeatNum ,
-- TotalNum,
-- TradeID
-- )
-- VALUES ( CONVERT(varchar(7), @temp, 111) , -- DataNum - nvarchar(50)
-- @first , -- FirstNum - int
-- @repeat , -- RepearNum - int
-- @total, -- TotalNum - int
-- @tradeID
-- )

-- END

SET @temp = DATEADD(MONTH, 1, @temp)
END

COMMIT TRAN
END TRY

BEGIN CATCH 
IF XACT_STATE() = -1 
BEGIN
ROLLBACK TRAN;
END
PRINT '更新失败';
END CATCH 
END
复制代码

 

posted @   SmilePastaLi  阅读(1394)  评论(0编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示