Bis*_*han 2 oracle plsql function oracle11g
我写下面FUNCTION检查给出的reference number是存在的.
FUNCTION find_reference_no(
p_ref_no IN VARCHAR2) RETURN VARCHAR2
AS
v_ref_no varchar2(50);
BEGIN
select REF_NO into v_ref_no from cash where REF_NO = p_ref_no;
EXCEPTION
WHEN no_data_found THEN
v_ref_no := '#';
RETURN v_ref_no;
END;
Run Code Online (Sandbox Code Playgroud)
我把这个函数叫做了AFTER INSERT TRIGGER.当我插入数据时,我得到了错误
ORA-06503: PL/SQL: Function returned without value
我怎么解决这个问题?
PS:我没有在cash表格中插入数据.我正在将数据插入另一个表(假设它是表B)并在其中调用此函数(表B)AFTER INSERT TRIGGER.
Nic*_*nov 12
所有函数都必须执行RETURN语句.您的函数在其异常块中具有RETURN,因此该语句在正常情况下不会执行.
内附select的附加声明begin end块都有自己的exception部分将解决您的问题.所以你的功能可能如下所示:
create or replace function find_reference_no(
p_ref_no IN VARCHAR2) return varchar2
AS
v_ref_no varchar2(50);
begin
begin
select REF_NO
into v_ref_no
from cash
where REF_NO = p_ref_no;
exception
WHEN no_data_found THEN
v_ref_no := '#';
end;
return v_ref_no;
end;
Run Code Online (Sandbox Code Playgroud)