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
    

      

  • 相关阅读:
    NSIS打包electron程序为exe安装包
    3、electron打包生成exe文件
    7、Shiro加密和加盐
    6、Shiro之自定义realm
    5、Shiro之jdbcRealm认证授权
    Jmeter-提取Json数据进行关联
    CentOS7 adb
    centos 7 安装pip和pip3
    最新Centos7安装python3并与python2共存
    centos7安装chrome浏览器
  • 原文地址:https://www.cnblogs.com/zhm001/p/11727330.html
Copyright © 2011-2022 走看看