• SQL server 不使用游标,使用临时表去获取数据,遍历处理数据


    SET QUOTED_IDENTIFIER ON
    SET ANSI_NULLS ON
    GO
    CREATE PROCEDURE [dbo].[SP_ConfirmScaner]
    AS
        BEGIN
            --SET STATISTICS IO ON
         
     
            DECLARE @ScanerTime DATETIME ,
                @InProvinceTimeDiffMinute INT ,
                @InProvinceStockTimeDiffMinute INT ,
                @UpdateState VARCHAR(20);
    
            SET @ScanerTime = GETDATE();
           -- SET @ScanerTime = '2019-10-01';
     
            SET @InProvinceTimeDiffMinute = 36 * 60 + 48 * 60;
     
            SET @InProvinceStockTimeDiffMinute = 72 * 60 + 48 * 60;
            SET @UpdateState = '000';
    
    
    
    
     
            DECLARE @DistanceTable TABLE ( id INT IDENTITY(1, 1) ,
                                           SendFlag BIT ,
                                           DiffMinute INT ,
                                           MinDistance INT ,
                                           MaxDistance INT );
            INSERT  INTO @DistanceTable ( SendFlag, DiffMinute, MinDistance,
                                          MaxDistance )
                    SELECT  0, 48 * 60 + 48 * 60, -99999, 499
                    UNION
                    SELECT  0, 72 * 60 + 48 * 60, 500, 999
                    UNION
                    SELECT  0, 96 * 60 + 48 * 60, 1000, 1999
                    UNION
                    SELECT  0, 168 * 60 + 48 * 60, 2000, 99999
                    UNION
                    SELECT  1, 96 * 60 + 48 * 60, -99999, 499
                    UNION
                    SELECT  1, 120 * 60 + 48 * 60, 500, 999
                    UNION
                    SELECT  1, 144 * 60 + 48 * 60, 1000, 1999
                    UNION
                    SELECT  1, 216 * 60 + 48 * 60, 2000, 99999;
    
            DECLARE @count INT;
            DECLARE @CurrentId INT;
            DECLARE @DiffMinute INT ,
                @MinDistance INT ,
                @MaxDistance INT ,
                @SendFlag bit;
            SELECT  @count = COUNT(0)
            FROM    @DistanceTable
            WHILE ( @count > 0 )
                BEGIN
                    SELECT TOP 1
                            @CurrentId = id, @SendFlag = SendFlag,
                            @DiffMinute = DiffMinute, @MinDistance = MinDistance,
                            @MaxDistance = MaxDistance
                    FROM    @DistanceTable AS a; 
    
    
                    DELETE  FROM @DistanceTable
                    WHERE   id = @CurrentId 
                    SELECT  @count = COUNT(0)
                    FROM    @DistanceTable
                END
            RETURN;
        END
    
    
    GO

    SQL server 不使用游标,使用临时表去获取数据,遍历处理数据

  • 相关阅读:
    CSS3媒体查询总结
    关于前端学习规划
    开发技术版本
    Visual Studio 问题汇总
    asp.net web core 开发问题汇总(1)
    asp.net web core 部署问题汇总
    报表平台需求文档(V0.0.0.1)
    Git使用说明
    派生类
    cin、cout的重载
  • 原文地址:https://www.cnblogs.com/niceletter/p/11975648.html
Copyright © 2020-2023  润新知