2017-04-01 53 views
0

我想創建這個存儲過程,應該把客戶和電子郵件地址作爲輸入。然後更新該客戶的電子郵件地址。如果新電子郵件地址與舊電子郵件地址相同,則應引發異常。oracle更新存儲過程與用戶定義的異常

CREATE OR REPLACE PROCEDURE UpdateEmail 
(CUSTOMERID IN CUSTOMER.CUSTOMERNO%TYPE, 
N_EMAIL IN CUSTOMER.EMAIL%TYPE) 

IS 
DECLARE 
    e_same EXCEPTION; 
    V_ROWCOUNT NUMBER; 

BEGIN 
SELECT COUNT(EMAIL) 
INTO V_ROWCOUNT 
FROM [email protected] 
WHERE CUSTOMER.EMAIL = N_EMAIL 
AND CUSTOMER.CUSTOMERNO = CUSTOMERID; 

IF V_ROWCOUNT > 0 

THEN RAISE e_same; 
ELSE 
UPDATE CUSTOMER 
SET EMAIL = N_EMAIL 
WHERE CUSTOMER.CUSTOMERNO = CUSTOMERID; 
END IF; 

EXCEPTION 
WHEN e_same THEN dbms_output.put_line ('email address exist'); 
END; 
/

但它是拋出錯誤。不知道我是否做得對。我正在使用最新的Oracle SQL Developer。

錯誤(6,1):PLS-00103:出現符號「DECLARE」在需要下列 之一時:開始功能編譯程序亞型類型 電流 光標刪除事先存在外部語言符號「開始「用 代替」DECLARE「繼續。
錯誤(28,4):PLS-00103: 遇到下列其中一個 時遇到符號「文件結束」:(如果啓動case聲明結束異常退出跳轉 循環mod null空格附註提高返回select更新而與< <繼續關閉當前刪除獲取鎖芯打開 回滾保存點設置SQL執行提交FORALL合流管清洗

+0

刪除'Declare' – Utsav

回答

0

刪除DECLARE

在過程中你不應該使用Declare。如果你正在寫一個PLSQL塊然後只有你應該使用Declare。不在實際的過程體中。

+0

感謝@Utsav的解釋。 – MohammedS