Domanda

Mi piacerebbe sapere come controllare se un cursore ref restituisce i dati.

Diciamo che ho il seguente codice in un package 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;

Questo codice viene utilizzato in un processo più coinvolti e la query in Foo sta usando più tabelle.

Ho bisogno i dati restituiti da Foo in un'applicazione asp.net, ma ho anche bisogno di fare qualcosa quando Foo trova alcuni dati.

Io voglio riutilizzare la query in pochi posti, ma non credo che questo sarebbe un buon candidato per una vista.

Quale sarebbe il modo migliore per sapere se Foo trova qualcosa?

Grazie.

È stato utile?

Soluzione

L'unico modo per sapere se ha trovato qualcosa è andare a prendere da esso:

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;
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top