熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Oracle >> 正文

oracle函數mergininto用法

2013-11-13 15:28:04  來源: Oracle 

  所有的MIS系統都存在一個同樣的需求就是對於特定的數據在一次批量操作過程中如果數據已經存在則對存在的數據按照現有情況進行

  更新如果不存在則需要加入數據庫這時我們就可以考慮采用 Oracle 的 MERGE 函數其具體用法如下

  MERGE INTO [your tablename] [rename your table here]
        USING
            (
                [write your query here]
            )[rename your querysql and using just like a table]
        ON
            ([conditional expression here] AND [])
        WHEN
            MATCHED
        THEN
            [here you can execute some update sql or something else ]
        WHEN
            NOT MATCHED
        THEN
            [execute something else here ! ]

  下面是實例
    假設一個student表 有這種需求如果學生ID存在則更改姓名
    如果學生ID不存在 則插入學生信息

  select>sql@kokooa>select * from student;

  S_ID S_NAME                    S_AGE
   
             李一                        
             李二                        
             李三                        
             李四                        
             李五                        
             李六                        

  select>sql@kokooa>select * from test;

  ID NAME            TEL ADDRESS
   
             aaa            
             bbb            
             ccc            
             ddd
             王五           
             張三            
             李四            

  merge into student s
    using
    (
       select idnametel from test)x
       on
         (ss_id=xid)
       when matched
       then update set s_name=xname
       when not matched
       then insert
        (s_ids_names_age)
       values
        (xidxnamextel);
    commit;

  最終結果
    select>sql@kokooa>select * from student;

  S_ID S_NAME                    S_AGE
   
             aaa                         
             bbb                         
             ccc                         
             ddd                         
             王五                         
             張三                        
             李四                        

  注意到 MERGE 語句在最後的(分號)這僅僅代表 MERGE 為一條完整的 SQL 語句同時要說明一下 USING 語句下方的 SQL 語句這個語句僅僅是為了給後面語句的執行做准備性的工作因此如果你需要的數據僅僅是通過參數傳入的那些值的話你就不需要再利用傳入進來的參數在重新從庫中查詢在 Oracle 的系統表中有張 Dual 表這樣你便可以使用 select [your arguments] from dual 的方式來構建這裡的 SQL 語句其中 [your arguments] 是你得到的一系列的參數由於Dual表是系統表因此可以大幅提升SQL的執行效率


From:http://tw.wingwit.com/Article/program/Oracle/201311/16764.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.