按时间数据审核存储过程

USE [edushi_zixun]
GO
/****** Object:  StoredProcedure [dbo].[Proc_ZX_CheckImportDataByHour]    Script Date: 12/11/2015 13:53:18 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROC [dbo].[Proc_ZX_CheckImportDataByHour]
@CityCode varchar(50)
AS
Begin
    
    --存放当前城市下的帖子列表
    Declare @Temp_IaIdByCity Table(
        IaId int
    )
    Delete From @Temp_IaIdByCity 
    
    --存放某一帖子下的回答记录列表
    Declare @Temp_IacIdByIaid Table(
        IacId int
    )
    Delete From @Temp_IacIdByIaid 
    
    Declare @importCount int =20
    Select @importCount=ISNull(Num,1) From ZxCheckNumByHour Where H=datepart(HOUR,GetDate()) AND CityCode=@CityCode
    
    IF (@importCount<=0)
    Begin
        return;
    End
    
    --设置取得的条数
    SET ROWCOUNT @importCount
    --取得当前城市下的@importCount条帖子 放入表变量
    Insert into @Temp_IaIdByCity 
    Select IA_ID From InfoArticle
    Where IA_State=0 AND IA_IsImport=1 AND IA_CityCode=@CityCode
    Order By NEWID() 
    SET ROWCOUNT 0
        
    Declare @NowTime datetime,@randomTime datetime,@startTime datetime,@endTime datetime
    --一小时前的时间
    Set @NowTime=dateadd(HH,-1,GETDATE())        
    Set @startTime=Convert(datetime,Convert(varchar,YEAR(@NowTime))+'-'+Convert(varchar,Month(@NowTime))+'-'+Convert(varchar,Day(@NowTime))+' '+Convert(varchar,datepart(Hour,@NowTime))+':0:0')
    Set @randomTime=@startTime
    --当前时间
    Set @endTime=GETDATE()

    Declare @CountByType int
    Set @CountByType=0
    Select @CountByType=COUNT(1) From @Temp_IaIdByCity        
            
    --循环当前城市下的所有帖子
    Declare @IaId INT
    DECLARE @IAContent NVARCHAR(max)
    Set @IaId=0
    
    
    --Declare @iA int=0,@iB int=0,@iCommentCount int=0
    
    While @IaId>0 --AND @importCount>@iA
    BEGIN
    
        --Set @iA=@iA+1
        Select Top 1 @IaId=IaId From @Temp_IaIdByCity    
        SELECT @IAContent=IA_Content FROM dbo.InfoArticle WHERE IA_ID=@IaId
        IF(CHARINDEX(@IAContent,'npic7.edushi.com')<0)
        BEGIN
         CONTINUE;
        END
    
        --指定范围内的随机时间
        Exec Proc_ZX_getRandomTime @startTime,@endTime,@randomTime OUTPUT
        
        --更新帖子审核状态,和时间
        Update InfoArticle Set IA_State=1,IA_CreateDate=@randomTime,IA_UpdateDate=@randomTime,IA_CheckDate=@randomTime Where IA_ID=@IaId
        
        Delete From @Temp_IacIdByIaid
        
        --当前帖子的所有回答暂存到表变量
        Insert into @Temp_IacIdByIaid 
        Select IAC_ID From InfoArticleComment
        Where  IA_ID=@IaId And IAC_IsImport=1 AND IAC_State=0-- And IAC_CityCode=@CityCode
        Order By IA_ID         
        
        --Set @iCommentCount=0
        --Select @iCommentCount=COUNT(1) From @Temp_IacIdByIaid
        
        --循环当前帖子Ia_Id的所有回答
        Declare @IacId int
        Set @IacId=0
        Select Top 1 @IacId=IacId From @Temp_IacIdByIaid
        While @IacId>0 --AND @iCommentCount>@iB
        Begin
            --Set @iB=@iB+1
            
            --指定范围内的随机时间 ,范围为上一个@randomTime到现在之间
            Exec Proc_ZX_getRandomTime @randomTime,@endTime,@randomTime OUTPUT
            
            Update InfoArticleComment Set IAC_State=1,IAC_CreateDate=@randomTime,IAC_UpdateDate=@randomTime Where IAC_ID=@IacId
                
            --下一条@IacId
            Delete From @Temp_IacIdByIaid Where IacId=@IacId
            Set @IacId=0
            Select Top 1 @IacId=IacId From @Temp_IacIdByIaid
        End
        
        --增量更新表,提供给索引使用        
        Insert into Map_SearchRecordState(MSRS_EntityID,MSRS_Name,MSRS_State,MSRS_CreateDate)
        Values(@IaId,'ZXIndex',1,getdate())
            
            
        --下一条IaId
        Delete From @Temp_IaIdByCity Where IaId=@IaId
        Set @IaId=0
        Select Top 1 @IaId=IaId From @Temp_IaIdByCity
        
    End

End

 

转载于:https://www.cnblogs.com/sunxi/p/5097821.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值