具有用户定义异常的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的解释。