【发布时间】:2016-03-03 14:24:20
【问题描述】:
我创建了一个包,其中包含一个程序,可以从表中删除不存在country_ID 的任何国家/地区。我写了这段代码:
CREATE PACKAGE cust_sa AS
PROCEDURE del_cn3(c_cntry_id COUNTRIES.COUNTRY_ID%TYPE)
IS
v_error_code NUMBER;
BEGIN
DELETE from countries WHERE country_id =c_cntry_id;
IF SQL%NOTFOUND THEN
DBMS_OUTPUT.PUT_LINE('No such record');
END IF;
EXCEPTION WHEN OTHERS THEN
v_error_code :=SQLCODE;
IF v_error_code =-2292 THEN
RAISE_APPLICATION_ERROR(-20004,'Organization ' ||
TO_CHAR(c_cntry_id) ||
' site details defined for it.');
END IF;
END del_cn3;
END cust_sa;
/
但是,我在创建此包时收到以下两个错误:
(第 4 行)在期望其中之一时遇到符号 V_ERROR_CODE 以下:语言
(最后一行)遇到符号 CUST_SA 预期以下情况之一时:;
为什么会出现错误以及如何解决?
【问题讨论】:
-
你的包(规范)应该只有过程头 - 你也有过程的实现 - 放在包体中。
-
我希望你能添加一个“ELSE RAISE;”到您的 WHEN OTHERS 异常处理程序。
标签: oracle syntax plsql package