具有用户定义异常的oracle更新存储过程

具有用户定义异常的oracle更新存储过程,oracle,stored-procedures,exception-handling,Oracle,Stored Procedures,Exception Handling,我正在尝试创建这个存储过程,它应该以客户编号和电子邮件地址作为输入。然后更新该客户的电子邮件地址。若新的电子邮件地址和旧的相同,则应引发异常 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 SEL

我正在尝试创建这个存储过程,它应该以客户编号和电子邮件地址作为输入。然后更新该客户的电子邮件地址。若新的电子邮件地址和旧的相同,则应引发异常

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 CUSTOMER@FIT5148B
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开发人员

错误(6,1):PLS-00103:在预期时遇到符号“DECLARE” 以下选项之一:开始函数pragma过程子类型类型 现在的 光标删除存在于符号“开始”之前的外部语言 替换为“声明”以继续。
错误(28,4):PLS-00103: 在预期出现以下情况之一时遇到符号“文件结束” 以下内容:(begin case declare end goto异常退出如果
循环mod null pragma raise return选择更新,同时使用删除
声明


您不应该在过程中使用
Declare
。如果您正在编写PLSQL块,那么只有您才应该在实际的过程体中使用
Declare

删除
Declare
感谢@Utsav的解释。