【发布时间】:2021-08-19 08:57:25
【问题描述】:
如何处理函数中的错误并返回null而不是任何错误?
简单示例:
create or replace Function MY_FUNC
(
p_par IN number
)
RETURN varchar2
IS
BEGIN
return (Select name from my_table where id = p_par);
END;
create or replace Function MY_FUNC
(
p_year IN number,
p_month IN number,
p_day IN number
)
RETURN varchar2
IS
v_return varchar2(100);
BEGIN
Select to_char(p_day)||''||substr(to_char(TO_DATE(p_year || '-' || p_month || '-' || p_day, 'YYYY-MM-DD'),'DY'),0,1) into v_return from dual;
return v_return;
END;
Select MY_FUNC(2021,6,30) from dual; --OK
Select MY_FUNC(2021,6,31) from dual; --Need catch error
如果表中没有记录,则返回 null,或者在 ORA-01839 上返回 null:日期对于任何指定的月份都无效。
【问题讨论】:
-
日期从何而来?
p_par是一个数字,我假设id是一个数字,name大概是一个varchar2 -
@JustinCave 在上面的示例函数中返回 varchar2,在其他函数中我得到错误(日期对月份无效)。