zoukankan      html  css  js  c++  java
  • 将一张表数据定时插入到另一张表

    之前一直在Java代码中嵌套sql,所以对sql有一个误区,只能一列一列执行,其实sql也可以定义变量,定义函数(存储过程)

    在公司实习,需要实现将一张表数据定时插入到另一张表

    这里用到了游标sql server的作业

    思路:   1.需要运用游标对表记录遍历的功能

                  2.需要将需要插入的列定义为变量赋值或者直接常量赋值

                 3.在插入时要判断新表中是否已经含有数据,实现增量同步

                 4.将sql脚本设置为定时作业  

                  sql脚本

                 

    declare 
    @subMark int,
    @currentMark varchar(32),
    @name varchar(32),
    @capitalspec varchar(100);
    set @subMark=(select  substring(max(mark),3,7)+1   from CptCapital where mark  like 'sc04%'  and  len(mark)=8)
    
    -- 声明游标
    DECLARE c_offOrdMacConfigZhb CURSOR FAST_FORWARD FOR
        select F_124 as name,(F_125+FModel+Fname) as capitalspec from  offOrdMacConfigZhb;
    
    --打开游标
    open c_offOrdMacConfigZhb;
    
    --取第一条记录
    FETCH NEXT FROM c_offOrdMacConfigZhb INTO @name,@capitalspec;
    
    WHILE @@FETCH_STATUS=0
    
    begin 
          --不存在才执行插入操作
          if not exists(select * from CptCapital where name=@name and capitalspec=@capitalspec and isdata=1)
          begin 
               set @currentMark='SC0'+convert(varchar,@subMark);
                insert into CptCapital(mark,name,departmentid,resourceid,sptcount,currencyid,capitalspec,capitaltypeid,capitalgroupid,unitid,isdata)values(@currentMark,@name,859,8274,1,1,@capitalspec,1,30,1,1);
               set @subMark=@subMark+1;
           end
          -- 取下一条记录
        FETCH NEXT FROM c_offOrdMacConfigZhb INTO @name,@capitalspec;
    end
    
    -- 关闭游标
    CLOSE c_offOrdMacConfigZhb;
    
    -- 释放游标
    DEALLOCATE c_offOrdMacConfigZhb;

                    

     

    其实,sql也并没有想象中那么复杂,熟悉了都一样

            在这里学会了游标的使用

                    

     

  • 相关阅读:
    (转载)什么时候需要用到try-catch
    直接打印Java的对象时输出的到底是什么
    关于图像语义分割的总结和感悟(转载)
    面经
    石家庄停车位在线预约平台16
    石家庄停车位在线预约平台15
    石家庄停车位在线预约平台14
    石家庄停车位在线预约平台13
    石家庄停车位在线预约平台12
    石家庄停车位在线预约平台11
  • 原文地址:https://www.cnblogs.com/goxcheer/p/8761486.html
Copyright © 2011-2022 走看看