首页 文章

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

提问于
浏览
0

我正在尝试创建此存储过程,该过程应将客户号码和电子邮件地址作为输入 . 然后更新该客户的电子邮件地址 . 如果新的电子邮件地址与旧的相同,则应引发异常 .

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 Developer .

错误(6,1):PLS-00103:遇到以下其中一项时遇到符号“DECLARE”:begin function pragma procedure子类型当前游标删除存在于外部语言之前符号“begin”替换为“DECLARE”继续 . 错误(28,4):PLS-00103:当遇到以下情况之一时遇到符号“文件结束”:(如果循环模式为空,则编译结束异常退出,如果循环模式为空,则编译返回选择更新,同时使用<<继续关闭当前删除获取锁定插入打开回滚保存点设置sql执行提交forall合并管道清除

1 回答

  • 0

    删除 DECLARE .

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

相关问题