將一張表數據定時插入到另一張表


之前一直在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也並沒有想象中那么復雜,熟悉了都一樣

        在這里學會了游標的使用

                

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM