PL/SQL函数返回没有值

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)