1. 程式人生 > >Oracle儲存過程之merge into 函式(二)

Oracle儲存過程之merge into 函式(二)

今天主要說明的是merger into 的各個層次關係,這個對於寫儲存過程非常重要!!!希望對大家有所幫助。

首先貼出的是今天寫的一些錯誤SQL:

這裡寫圖片描述

執行提示無效的SQL語句!!!

  1. 第一個錯誤,單獨寫儲存過程來測試的話,第一句是不需要的,這個大家切記
  2. 然後是本篇部落格最重要的層次關係!!!
    BEGIN EXCEPTION END 這三個是一個層次的,大家切記!!
  3. commit 的位置,我寫的位置有點瞎了,相信大家都能看出來了,怎麼能出異常的時候提交呢
  4. 最後需要說的就算merge into 是一個整天,我圖中沒標出來,一個merge into 結束要有一個分號,一個從媒體結束要有一個分號,一個exception結束要有一個分號,end結束也要有一個分號。
    下面我會貼出正確的邏輯程式碼,也是一個小小的儲存過程,大家可以借鑑一下,希望對大家有所幫助。
 BEGIN
   --更新人員的機構名稱和歸屬關係,8/2新增機構所在行政區劃
   MERGE INTO T_JSQY_MEDICALPERSON A
   USING (SELECT B.* FROM T_JSQY_HOSPITAL B WHERE  B.REMOVED = '0') E
   ON (A.HOSPITALID = E.ORGANCODE)
   WHEN MATCHED THEN
     UPDATE
        SET A.HOSPITALNAME = E.ORGANNAME,
            A.HOS_OWNER    = E.MEMBERSHIPCODE,
            A.AREACODE     = E.GBCODE;
   COMMIT;
 EXCEPTION
   WHEN
OTHERS THEN DBMS_OUTPUT.PUT_LINE('>>>>>>>>>>>>>>>>>>' || SQLERRM); END;