我有一些表,并试图获取指定过滤器的记录时的主键,否则我需要我的函数返回NULL值。哪种方法更适合处理PL/SQL中缺失的数据
我能做到这一点无论是这样
function getIdIfExists(pParam number) return number is
resultId number;
begin
begin
select ID into resultId from mytable where some_condition = pParam and rownum = 1;
exception when NO_DATA_FOUND then
resultId := NULL;
end;
return resultId;
end;
或者这样说:
function getIdIfExists(pParam number) return number is
resultId number := NULL;
begin
for item in (select * into resultId from mytable where some_condition = pParam) loop
resultId := item.ID;
exit;
end loop;
return resultId;
end;
那么哪一个更好?或者可能有不同的方法?
谢谢,但异常处理一个好主意? – stasal
我会说使用异常处理是好的,毕竟没有行是你将类作为例外事件,因为特定的ID已经提供给函数,从而推断它是存在的。 – XVar
我不明白你为什么需要NO_DATA_FOUND? MAX(...)总是返回一个值,如果select中没有数据与你的查询匹配,则聚合将为NULL。异常块是错误的,只会刺激开发人员 – Falco