Boa tarde,
A procedure abaixo retornar informação em um cursor. O detalhe é que tive que incluir uma consistência para verificar se o cursor retorna vazio. Para isso utilizei o %NOTFOUND. O problema é que partir deste controle não consegui mais retornar o valor caso o mesmo exista. A solução que encontrei foi repetir o cursor no ELSE o que não achei legal. Essa procedure esta em uma package que é utilizada por uma aplicação WEB.
A minha pergunta é: teria alguma forma de retornar o valor a partir do ELSE sem precisar repetir a query?
PROCEDURE SEL_VALOR_RAMAL
(
pJPNum in varchar2
,pCursor IN OUT RecsetCursor
)
AS
v_custo_ramal number;
BEGIN
OPEN pCursor FOR
SELECT VLFAT AS CUSTO_RAMAL
FROM empresa
WHERE ITEMNUM = ‘RAM’
AND ATRIBUTO = ‘N’
AND JPNUM = pJPNum;
fetch pCursor into v_custo_ramal;
if ( pCursor%notfound ) then
Open pCursor for select 0 as CUSTO_RAMAL from dual;
else
OPEN pCursor FOR
SELECT VLFAT AS CUSTO_RAMAL
FROM empresa
WHERE ITEMNUM = ‘RAM’
AND ATRIBUTO = ‘N’
AND JPNUM = pJPNum;
end if;
END SEL_VALOR_RAMAL;
Obrigado.
Airton