Ich bin ein wenig neu zu PL/SQL und brauchen etwas, das ein bisschen wie folgt aussieht:Wie Ref Cursor-Parameter zu einer Objektmethode zu deklarieren?
create type base as object (
unused number,
member procedure p(c in ref cursor)
) not final;
create type child1 under base (
overriding member procedure p(c in ref cursor) as
t table1%rowtype
begin
fetch c into t;
-- process table1 row
end;
);
create type child2 under base (
overriding member procedure p(c in ref cursor) as
t table2%rowtype
begin
fetch c into t;
-- process table2 row
end;
);
procedure generic_handler(o in base, c in ref cursor) as
begin
o.p(c);
end;
o1 child1 := child1(0)
o2 child2 := child2(0)
c ref cursor
open c for select * from table1;
generic_handler(o1, c);
open c for select * from table2;
generic_handler(o2, c);
Grundsätzlich, ich brauche eine einzelne generische Routine, die weiß, wie man eine Tabelle unabhängige Aktion Delegieren Tabelle auszuführen -spezifische Aufgaben für eine abgeleitete Klasse.
Die oben genannten Objektmethoden, die 'ref cursors' nicht kompilieren - Compiler sagt 'Cursor muss definiert werden'. Also habe ich natürlich versucht 'generic_cursor als ref cursor' überall zu tippen, aber es kann nicht kompiliert werden.
Ich fand ziemlich nichts bei dem Versuch, die Syntax für die Übergabe ref cursors an Objektmethoden zu finden. Und das ließ mich denken, dass ich vielleicht etwas Dummes versuchen würde.
Macht das, was ich versuche, Sinn? Wenn ja, was fehlt mir? Wo kann ich den generic_cursor definieren, damit ich ihn als Objektmethode verwenden kann?
Das sys_refcursor hat es geschafft, danke! Ich sehe jetzt in Kapitel 11 (!), Dass Sie es verwenden können, anstatt zuerst einen Ref-Cursortyp zu erstellen. Ich habe immer noch den Eindruck, dass ich die Sprache missbrauche, damit sie mehr wie jede andere OO-Sprache aussieht und mir beim Schreiben von Code hilft ... Finde es bald heraus. :) Nochmals vielen Dank für Ihre Hilfe. –