我需要根据函数中给定的参数值选择计数。函数参数值可以是'我'或者' D'或者'所有'。 ' ALL'意味着我和D都是。
代表:
create or replace function test1( FLAG in varchar2) return varchar2
as
b varchar2(20);
c varchar2(20);
begin
if flag='ALL'
then
c:='I','D';
else
c:=FLAG;
end if;
select count(*) into b from test where id=c;
return b;
end;
如果我通过I或D工作正常。我想通过' ALL'如在参数中选择两个(I,D)的所有计数但我面临错误。
如果我在结束时需要任何其他信息,请告诉我。
答案 0 :(得分:1)
有几种方法可以做到这一点,对于你的场景来说都很复杂。如果您在SQL中使用IF语句中的逻辑,那么它会更容易:
select count(*) into b from test where flag = 'ALL' or id = flag
因此,如果您传入FLAG
ALL,那么您将获得表中的所有内容,否则如果FLAG
不是ALL,则将其限制为特定值。如果您想将ID限制为仅提到的2个值,那么您可以这样做:
select count(*) into b
from test
where ( flag = 'ALL' and id in ('I','D') )
or id = flag
答案 1 :(得分:0)
如果需要更改块以满足您的要求。更新的代码如下所列。
创建或替换函数test1(varchar2中的flag_var)return varchar2
as
count_num NUMBER(20);
begin
if flag_var='ALL'
then
select count(*) into count_num from TEST where ID in ('I' , 'D');
else
select count(*) into count_num from TEST where ID = flag_var;
end if;
return count_num;
端;