暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Oracle 未处理的用户定义异常:无法在主程序中处理

askTom 2015-12-05
600

问题描述

大家好,

我需要你的帮助场景是我需要创建一个函数,将输入字符串转换成日期格式,但如果字符串不能转换成日期格式,那么在函数中应该提出一个用户定义的异常,这个异常应该在主程序中处理,以便进一步的处理可以完成。下面是示例代码。

请让我知道在oracle中用户定义的不处理的异常是否可以传播到调用程序,以及在主程序中如何处理它?



--步骤1 :
创建或替换要转换的函数to_dt(in_txt IN VARCHAR2 --
)
退货日期
组件
date_exp异常;
开始
返回到日期(在_txt中,'YYYYMMDD'中) ;
异常--如果TO_D导致错误,则我想将我想处理的用户定义的异常date_exp通知主程序
当其他人
那么
提升日期_exp ;
返回空值;

承诺;
结束到(_D)


--第2步
宣布
date_exp异常;
v_date date;
开始
--select to_dt('20150101') into v_date from dual;
--dbms_output.put_line(v_date); --01-JAN-15--Happy Path

select to_dt('20153131') into v_date from dual;--I am expecting it should goto 例外 handler and print 'Invalid date' but I am getting below errors:
/*错误报告-
ORA-06510 : PL/SQL :未处理的用户定义异常
ORA-06512 : "SCOTT.TO_DT" ,第11行
ORA-01843 :不是有效月份
ORA-06512 :在第8行
06510。00000 - "PL/SQL :未处理的用户定义异常"
*原因: PL/SQL代码引发了用户定义的异常,但是
未处理。
*行动:修复导致异常的问题或写入异常
此条件的处理程序。或者您可能需要联系您的
应用程序管理员或DBA.*/

dbms_output.put_line(v_date);
例外
当date_exp时,然后
dbms_output.put_line('Invalid date');
end;

谢谢,

专家解答

如果它全部在plsql中,则可以在包规范中声明异常。

然后,例程可以执行以下操作:提升pkg.my_异常

和其他例程可以做到:

例外
when pkg.my_例外

希望这个能帮上忙。
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论