Oracle函数中的错误传播
我有一个Oracle函数,它的结构如下Oracle函数中的错误传播,oracle,oracle10g,Oracle,Oracle10g,我有一个Oracle函数,它的结构如下 Function TEST_FUNC(o_err_msg varchar2) return BOOLEAN is begin for C in 1..10 loop begin insert into test values(c); return true; exception when no_data_found null; retur
Function TEST_FUNC(o_err_msg varchar2)
return BOOLEAN
is
begin
for C in 1..10
loop
begin
insert into test
values(c);
return true;
exception
when no_data_found
null;
return true;
when others then
---Some Code
return false;
end;
end loop;
end;
当我运行这个程序时,我得到了ORA-06503:PL/SQL:函数,返回时没有值。如何确保当内部块返回TRUE时函数返回TRUE,当返回FALSE时函数返回FALSE
请提供帮助。这里的问题是您没有得到任何异常-因此循环成功执行,但在循环完成后没有返回语句。您需要添加一个:
Function test_func(o_err_msg varchar2) return boolean is
begin
for c in 1..10 loop
begin
insert into test
values(c);
exception
when no_data_found
return true;
when others then
---Some Code
return false;
end;
end loop;
return True;
end test_func;
其他问题:
- INSERT语句不会返回NO_DATA_FOUND异常,这是在使用SELECT INTO时引发的(可能是指索引上的DUP_VAL_?)
- 请缩进李>
- 如果用函数名结束函数,这对以后的工作很有帮助,这只会有助于清晰
- 如果您确实在这样做,那么最好使用一条INSERT语句