Frage

Ich möchte wissen, wie Sie überprüfen, ob ein ref Cursor gibt Daten.

Lassen Sie uns sagen, dass ich den folgenden Code in einem PL / SQL-Paket haben:

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;

Dieser Code wird in einem beteiligten Prozess verwendet und die Abfrage in Foo wird mit mehreren Tabellen.

Ich brauche die von Foo in einer asp.net Anwendung zurückgegebenen Daten, aber ich muss auch etwas tun, wenn Foo einige Daten findet.

Ich mag die Abfrage an einigen Stellen wieder zu verwenden, aber ich glaube nicht, das ein guter Kandidat für eine Ansicht wäre.

Was ist der beste Weg wäre, zu wissen, ob Foo etwas findet?

Danke.

War es hilfreich?

Lösung

Der einzige Weg, zu wissen, ob es etwas gefunden hat, ist von ihm FETCH:

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;
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top