我正在尝试创建此存储过程,该过程应将客户号码和电子邮件地址作为输入。然后更新该客户的电子邮件地址。如果新的电子邮件地址与旧的相同,则应引发异常。
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子类型 当前 光标删除存在于外部语言之前符号"开始"是 取代" DECLARE"继续。
错误(28,4):PLS-00103: 遇到符号"文件结尾"当期待其中一个 以下:(开始案例声明结束异常退出goto if 使用<<循环mod null pragma raise返回选择更新继续关闭当前删除获取锁定插入打开 rollback savepoint set sql execute commit forall merge pipe purge
答案 0 :(得分:0)
删除DECLARE
。
您不应在程序中使用Declare
。如果您正在编写PLSQL块,则只应使用Declare
。不在实际的过程体中。