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.

Foi útil?

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
scroll top