PL/Sql 函数

PL/Sql function

我的任务是制作一个 PL/SQL 函数,它有两个参数,在输入它们时,函数必须 return 匹配 parameters.And 同一行中的值的总和如果这些参数与数据库中的数据不匹配,则该函数必须 return 零值而不是空值。

这是我的代码:

create or replace 
function FGET_EST_INV_SUB (unos_fsub in number, unos_bcycle in number)
return number 
is

amountb number;

cursor C1 is
select SUM (NVL(AMOUNT,0))
from FMDCUSTINVOICEITEMEST
where FSUBSCRIBER_ID= UNOS_FSUB and BCYCLE = UNOS_BCYCLE;

BEGIN

open C1;
FETCH C1 into AMOUNTB;

if C1%NOTFOUND then
   AMOUNTB :=0;
end if;

    close C1; 

return Amountb;

EXCEPTION 
when OTHERS then 
raise_application_error(-20001,'An error was encountered - '||SQLCODE||' -ERROR- '||SQLERRM);

end FGET_EST_INV_SUB;

那么在任何一个参数不匹配的情况下,我如何使它 return 在函数本身中为零,并且请不要在我调用函数时说要这样做NVL的使用。我在函数内部需要它。

使用游标有点夸张things.if你只想return总和如果参数被接受或者return如果参数无效则为零,你可以把select 语句并使用 "into".

保存总和
create or replace 
function FGET_EST_INV_SUB (unos_fsub in number, unos_bcycle in number)
return number 
is

amountb number;



BEGIN

select SUM(AMOUNT) 
into amountb
from FMDCUSTINVOICEITEMEST
where FSUBSCRIBER_ID= UNOS_FSUB and BCYCLE = UNOS_BCYCLE;

return nvl(amountb,0);

EXCEPTION 
when OTHERS then 
 raise_application_error(-20001,'An error was encountered - '||SQLCODE||' -ERROR- '||SQLERRM);

end FGET_EST_INV_SUB;