Oracle儲存過程之merge into 函式(二)
阿新 • • 發佈:2019-02-06
今天主要說明的是merger into 的各個層次關係,這個對於寫儲存過程非常重要!!!希望對大家有所幫助。
首先貼出的是今天寫的一些錯誤SQL:
執行提示無效的SQL語句!!!
- 第一個錯誤,單獨寫儲存過程來測試的話,第一句是不需要的,這個大家切記
- 然後是本篇部落格最重要的層次關係!!!
BEGIN EXCEPTION END 這三個是一個層次的,大家切記!! - commit 的位置,我寫的位置有點瞎了,相信大家都能看出來了,怎麼能出異常的時候提交呢
- 最後需要說的就算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;