Я новичок в Oracle и надеялся, что кто-нибудь сможет мне помочь.
У меня есть эта хранимая процедура:
procedure ListCatalogues(P_CUR out sys_refcursor,
P_CATALOGUENAME varchar2 default '%',
P_LIMIT number,
P_MEMBERS number default -1) is
begin
open P_CUR for
select *
from ( select h.catalogueid id,
h.cataloguename name,
case
when h.uniquecatalogue = 'N'
then 1
else 0
end includeproducts,
case
when h.active = 'Y'
then 1
else 0
end active,
case
when h.ownbrandedlabels = 'Y'
then 1
else 0
end ownlabels,
( select count(*)
from cc_custprofiles t
where t.catalogueid = h.catalogueid
) members
from cc_ob_catalogueheader h
where upper(h.cataloguename) like upper('%'||P_CATALOGUENAME||'%')
and (select count(*) from cc_custprofiles t where t.catalogueid = h.catalogueid) >= P_MEMBERS
order by h.catalogueid
)
where rownum <= P_LIMIT;
end ListCatalogues;
Как видите, он принимает параметр P_LIMIT
, который позволяет ограничить возвращаемые результаты. Это хорошо, но я хочу немного подробнее остановиться на этом.
Если ограничение равно 10, вернуть 10 строк, но если ограничение равно 0, вернуть все. Может ли кто-нибудь помочь мне изменить запрос в соответствии с моими критериями?