wie wenn ein Cursor ref gibt Daten von einer PL / SQL-Prozedur überprüfen
-
27-09-2019 - |
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.
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