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;
我的任务是制作一个 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;