【发布时间】:2019-06-22 15:58:33
【问题描述】:
下面的我的 Oracle 函数(代码 1)没有异常处理。 因此,如果调用(code2)为0,则会显示错误。
--Code 1
CREATE OR REPLACE FUNCTION TEST2
(P1 IN VARCHAR2)
RETURN NUMBER AS V_VALUE NUMBER;
BEGIN
SELECT(
SELECT 1/TO_NUMBER(P1)
FROM DUAL
)
INTO V_VALUE
FROM DUAL;
RETURN V_VALUE;
END;
/
--Code2
SELECT TEST2('0') FROM DUAL;
请帮助为每个 1) 2) 情况添加异常处理,如下所示。
case 1) 定义函数时,如何修改code1 如果系统异常,函数返回 -1, 包括除以零吗?
案例 2) 在我的 Oracle 函数中不添加异常, 如果系统异常(包括除零)发生在函数中,如何修改code2以使reslut为-1?
【问题讨论】:
-
从 Oracle 12.2 开始的预定义异常定义为 here。
zero_divide是其中之一,但我不确定您想将哪些其他内容归类为系统异常。value_error和invalid_number,也许?