zoukankan      html  css  js  c++  java
  • 根据配置表将数据从A表转入B表

    --创建存储过程
    CREATE PROCEDURE TransferToHistory AS
    BEGIN
      --不返回计数
      SET NOCOUNT ON;
      --开始捕捉异常
      BEGIN TRY
        -- 声明配置表变量
        DECLARE @config TABLE (id NVARCHAR(5));
        --创建临时A表
        CREATE TABLE #temp(id INT,t_a VARCHAR(15),t_b INT,......);
        -- 将配置表中的数据插入到配置表变量中
        INSERT INTO @config(id) SELECT id FROM config ORDER BY id;	
        -- 声明变量	
        DECLARE @sql NVARCHAR(MAX),@id NVARCHAR(5);
          --循环配置表	
          WHILE EXISTS(SELECT id FROM @config)	
          BEGIN
            --将条件赋值给变量中
            SELECT @id = id FROM @config ORDER BY id;
            --初始化临时表插入500条
            SET @sql ='SELECT TOP 500 id,a,b FROM A_'+ @id +' WITH(NOLOCK) WHERE time <= CONVERT(varchar(10),DATEADD(MONTH,-2,GETDATE()),112) ORDER BY id;';
            INSERT INTO #temp(id,t_a,t_b)
            EXEC (@sql);
            --判断临时表是否存在数据
            WHILE (SELECT COUNT(1) FROM #temp)>0
              BEGIN
                --将临时表数据插入到B表并删除A表数据和临时表数据
                SET @sql='INSERT INTO history(type_id,t_a,t_b)
                      SELECT type_id=' + @id + ',t_a,t_b FROM #temp;	  
                      DELETE A FROM A_' + @id + ' AS A INNER JOIN #temp AS B ON A.id=B.id;
                      DELETE #temp;'
                EXEC (@sql);
                --如果A表存在数据继续插入500条到临时表
                SET @sql ='SELECT TOP 500 id,a,b FROM A_'+ @id +' WITH(NOLOCK) WHERE time <= CONVERT(varchar(10),DATEADD(MONTH,-2,GETDATE()),112) ORDER BY id;';
    			    INSERT INTO #temp(id,t_a,t_b)
                EXEC (@sql);
              END
              --该条件已全部转完从临时配置表删除
              DELETE FROM @config WHERE id=@id;
            END
          --使用完删除临时表
          DROP TABLE #temp;
    	END TRY-----------结束捕捉异常
        BEGIN CATCH------------有异常被捕获
        DROP TABLE #temp;
        SELECT ERROR_NUMBER() AS ErrorNumber,ERROR_SEVERITY() AS ErrorSeverity,ERROR_STATE() AS ErrorState,ERROR_PROCEDURE() AS ErrorProcedure, ERROR_LINE() AS ErrorLine,ERROR_MESSAGE() AS ErrorMessage
        END CATCH--------结束异常处理
    END
    

      

  • 相关阅读:
    React在componentDidMount里面发送请求
    React 术语词汇表
    React里受控与非受控组件
    React和Vue等框架什么时候操作DOM
    【LeetCode】79. Word Search
    【LeetCode】91. Decode Ways
    【LeetCode】80. Remove Duplicates from Sorted Array II (2 solutions)
    【LeetCode】1. Two Sum
    【LeetCode】141. Linked List Cycle (2 solutions)
    【LeetCode】120. Triangle (3 solutions)
  • 原文地址:https://www.cnblogs.com/zhm001/p/11727330.html
Copyright © 2011-2022 走看看