日期:2014-05-17  浏览次数:20933 次

包里的存储过程如何调用该包内的自定义异常
大家好,我是菜鸟一枚,今天第一次来CSDN论坛发帖,大家多多关照哈
我定义的包:
create or replace package a as
procedure main
(p_course_name in number);
ex exception;
end;

包体:
create or replace package body a as 
ex exception;
procedure main(p_course_name in number) as
ln_course_id number;
begin
select course_id into ln_course_id from table where course_name = p_course_name;
 exception 
     when  NO_DATA_FOUND then 
     raise ex;
end main;
end;
我在RAISE EX的时候出错,这是为嘛,异常不定义在过程里如何解决啊?
exception

------解决方案--------------------
定义例外的语法不对
一 先定义例外
 EXC_ERROR     EXCEPTION;
二 再写例外的触发条件
    IF II_DATE IS NULL THEN
       VI_ERR_CODE := -1;
       VV_ERR_MSG  := '没有输入统计月份参数';
       RAISE EXC_ERROR;
    END IF;
三 最后定义例外是什么
    WHEN EXC_RETURN THEN
        SP_114_SYS_LOG(VI_TASK_ID,NULL,NULL,NULL,0,NULL,VV_TASK_POS,VI_RESULT);
        OI_RETURN := 0;