zoukankan      html  css  js  c++  java
  • 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 不使用游标,使用临时表去获取数据,遍历处理数据

  • 相关阅读:
    [转]关闭 Chrome 浏览器的启动时提示 - 请停用以开发者模式运行的扩展程序
    [Java][Web]ServletContext 方法的应用
    SQL中char、varchar、nchar、nvarchar 详解
    数据库三级模式与二级映像
    数据库设计思考
    Oracle概述
    asp.net服务器控件button先执行js再执行后台的方法
    C# 序列化
    HTML服务器控件与Web服务器控件
    VS2013自带报表+打印功能
  • 原文地址:https://www.cnblogs.com/niceletter/p/11975648.html
Copyright © 2011-2022 走看看