Como verificar se um cursor de referência retorna dados de um procedimento PL/SQL
-
27-09-2019 - |
Pergunta
Eu gostaria de saber como verificar se um cursor de referência retorna dados.
Digamos que eu tenha o seguinte código em um pacote PL/SQL:
type refcursor is ref cursor;
procedure Foo(cursorresult out refcursor) is
begin
open cursorresult for
select *
from table t
inner join t2 on t.id = t2.id
where t.column1 is null;
end;
procedure DoSomeghingIfFooHasResults is
curFoo refcursor;
begin
Foo(curSansOwner);
if curFoo%found then
-- Do something
end if;
end function;
Este código é usado em um processo mais envolvido e a consulta no Foo está usando várias tabelas.
Preciso que os dados retornem do Foo em um aplicativo ASP.NET, mas também preciso fazer algo quando Foo encontrar alguns dados.
Quero reutilizar a consulta em alguns lugares, mas não acho que isso seja um bom candidato para uma visão.
Qual seria a melhor maneira de saber se Foo encontrar algo?
Obrigado.
Solução
A única maneira de saber se encontrou algo é buscar:
procedure DoSomeghingIfFooHasResults is
curFoo refcursor;
recFoo mytable%ROWTYPE;
begin
Foo(curFoo);
fetch curFoo into recFoo;
if curFoo%found then
-- Do something
end if;
end function;
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow