oracle merge into on using 用法


MERGE INTO table1 a USING ( select id,name from table2) b ON (a.id=b.id)     
WHEN MATHED THEN update set a.name=b.name 
WHEN NOT MATHED THEN insert (id,name) values('id','name');

merge into 一般用於主鍵存在就更新其他字段,主鍵不存在就新增一條數據。
MATHED then后面的 update 不需要寫表名,並且可以添加where條件,是對匹配到的結果集進行篩選。update 后面一般不用條件,其更新操作只對匹配到的結果集更新。

DECLARE 
       V_LANG CLOB := '超長字符串';
BEGIN
    merge into LM_BIDDING a
    using ( select NVL('甘肅省XXXXXXXXXX', '0' ) as title
    ,'TS00000063' as  custno
    ,NVL('2018-11-12', '0' ) as  releasedate
    ,NVL('甘肅省zz', '0' ) as purchaser  from dual) b
    on (NVL( a.TITLE, '0' )=b.title
    and a.CUSTNO=b.custno
    and NVL(  a.RELEASEDATE, '0' )=b.releasedate
    and  NVL(  a.PURCHASER, '0' )=b.purchaser )
    WHEN MATCHED THEN
      UPDATE SET AMDCNL=AMDCNL||'+1' --WHERE CUSTNO='TS00000063' AND RELEASEDATE='2018-11-12' AND TITLE='甘肅省XXXXXXXXXX' AND PURCHASER='甘肅省zz' 
when not matched then insert ( BIDDINGID, CUSTNO, CREDITCODE, AGENCY, ANNODATE, ANNOITEM ) values (
'Bxxxxx440', 'TS0xxxx063', '91620xxxx74835J', '甘肅xxxx有限公司', '2018-11-12', ' 服務/環境服務/空氣污染治理服務') ;
   
  update LM_BIDDING set TEXT=TEXT||V_LANG where BIDDINGID = #{biddingid,jdbcType=VARCHAR} ;
    
END;

 

 
         
         
        



免責聲明!

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



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