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
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 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)