式样书:
1。od_recv_date := TO_DATE(iv_recv_date, xxfnd_constant_pkg.cv_standard_date_mask);
2。1处理要是有异常的话,就呼出expt_recv_date_error(一个异常)。
我的问题是,我一般写异常的语句都是
if.... then
   raise exception_name;
现在我已经定义了expt_recv_date_error,我怎么才能知道什么时候发生异常。
比如我这样写:
od_recv_date := TO_DATE(iv_recv_date, xxfnd_constant_pkg.cv_standard_date_mask);
raise expt_recv_date_error;
这一定是不对的,因为不管有没有异常,都调用了expt_recv_date_error。
前辈们帮帮我哦!

解决方案 »

  1.   


    declarebegin
     执行1
    exception
    when 异常种类 then
     执行2
    end; 
      

  2.   

    我也不知道 异常种类是什么啊,就知道定义了一个名为expt_recv_date_error 的异常。
    大家帮帮忙哦!!!
      

  3.   

    自己查吧,应该是全的
    ACCESS_INTO_NULL
        为对象赋值前必需初始化对象。对应ORA-06530错误。CASE_NOT_FOUND
        使用CASE语句时在WHEN子句中没有包含必需的条件分支,并且没有包含ELSE语句。
        对应ORA-06592错误。COLLECTION_IS_NULL
        给集合元素赋值前,必需初始化集合元素。对应ORA-06531错误。CURSOR_ALRADY_OPEN
        重新打开已经打开的游标。对应ORA-06511错误。DUP_VAL_ON_INDEX
        在惟一索引所对应的列上键入重复值。对应ORA-00001错误。INVALID_CURSOR
        试图操作不合法的游标。对应ORA-01001错误。INVALID_NUMBER
        内嵌SQL语句不能有效的将字符转换成数字。对应ORA-01722错误。NO_DATA_FOUND
        执行SELECT INTO未返回行。对应ORA-01403错误。TOO_MANY_ROWS
        执行SELECT INTO语句时,返回超过一行。对应ORA-01422错误。ZERO_DIVIDE
        PL/SQL块中,使用数字除0,对应ORA-01476错误。SUBSCRIPT_BEYOND_COUNT
        元素下标超出嵌套表或VARRAY元素的范围。对应ORA-06533错误。SUBSCRIPT_OUTSIDE_LIMIT
        使用嵌套表或VARRAY元素时,元素下标为负。对应ORA-06532错误。VALUE_ERROR
        PL/SQL中赋值操作时,变量长度不足以容纳实际数据,或尝试将无效的字符串转换成数据。
        对应ORA-06502错误。LOGIN_DENIED
        连接到ORACLE数据库时,用户名/密码不正确。对应ORA-01017错误。NOT_LOGGED_ON
        应用程序没有连接到数据库。对应ORA-01012错误。PROGRAM_ERROR
        PL/SQL内部问题。对应ORA-06510错误。ROWTYPE_MISMATCH
       执行赋值操作时,宿主游标变量和PL/SQL游标变量返回类型不兼容。对应ORA-06504错误。SELF_IS_NULL
       在NULL实例上调用成员方法。对应ORA-30625错误。STORAGE_ERROR
       PL/SQL块运行时超出了内存空间或者内存被破坏。SYS_INVALID_ROWID
       将字符串转变为ROWID时没有使用有效的字符串。对应ORA-01410错误。TIMEOUT_ON_RESOURCE
       ORACLE在等待资源时超时。对应ORA-00051错误。TRANSACTION_BACKED_OUT
       由于死锁提交被退回 对应ORA-006 错误
      

  4.   

    首先,你要知道你的语句在什么情况下会出现异常,我想你定义的异常的意思是没有取得正确的数据,
    如果是这样的话,你可以用oracle自带的异常,如VALUE_ERROR,NO_DATE_FOUND等,没必要自定义一个异常了。用oracle自带异常的方法:DECLARE
      ..
    BEGIN
       od_recv_date := TO_DATE(iv_recv_date, xxfnd_constant_pkg.cv_standard_date_mask); 
       ...EXCEPTION
      WHEN VALUE_ERROR
      THEN ...
      WHEN NO_DATE_FOUND
      THEN ...
    END;更多的oracle自带异常你可以在网上找找,应该会有你需要的。
      

  5.   

    没有符合的就用
    when others then
      

  6.   


    oracle自带异常都在这里了,呵呵
      

  7.   

    先得要搞清TO_DATE(iv_recv_date, xxfnd_constant_pkg.cv_standard_date_mask); 
    的功能是做什么的,xxfnd_constant_pkg.cv_standard_date_mask好像是调的包里面的一个过程,如果是这样的话你的异常就在xxfnd_constant_pkg.cv_standard_date_mask这里面处理就是了,只是把处理的结果反馈回来
      

  8.   

    1。od_recv_date := TO_DATE(iv_recv_date, xxfnd_constant_pkg.cv_standard_date_mask); 
    2。1处理要是有异常的话,就呼出expt_recv_date_error(一个异常)。答:嵌入匿名块...   --其他代码BEGIN
       od_recv_date := TO_DATE(iv_recv_date, xxfnd_constant_pkg.cv_standard_date_mask);
    EXCEPTION
       WHEN OTHERS THEN
          RAISE expt_recv_date_error;
    END;...  --其他代码