一个利用oracle异常处理的函数
函数主体如下:
CREATE OR REPLACE FUNCTION fn_get_agmt_bal(p_agmt_no varchar2)
RETURN NUMBER ISv_bal NUMBER := 0;--在SQL/PLUS中执行时,若合dbms_output生效,需先执行【SET SERVEROUTPUT ON】;
BEGINselect agmt_balinto v_balfrom edw_t01_agmt_bal_hwhere agmt_no = P_agmt_no;RETURN v_bal;
EXCEPTIONWHEN NO_DATA_FOUND THENdbms_output.put_line('没有找到数据,请输入合法的协议编号!');return null;WHEN TOO_MANY_ROWS THENdbms_output.put_line('返回数据太多,请输入合法的协议编号!');return null;WHEN OTHERS THENdbms_output.put_line('异常!');return null;
END fn_get_agmt_bal;
/
说明:
1、函数中用到了dbms_output包,在SQL/PLUS中执行时,若合使dbms_output生效,需先执行【SET SERVEROUTPUT ON】。
2、这是一个利用oracle异常处理的通用格式,其他情况可依此套用。