我正在尝试创建此存储过程,该过程应将客户号码和电子邮件地址作为输入 . 然后更新该客户的电子邮件地址 . 如果新的电子邮件地址与旧的相同,则应引发异常 .
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 回答
删除
DECLARE
.您不应在过程中使用
Declare
. 如果您正在编写PLSQL块,那么只应使用Declare
. 不在实际的过程体中 .