Unterschied zwischen "IN" und "OUT" CURSOR-parameter in Oracle

Vom Oracle:
"Wenn Sie deklarieren Sie eine cursor-variable als formale parameter an ein Unterprogramm, das holt aus dem cursor-variable, müssen Sie die IN-oder IM AUS-Modus. Wenn das Unterprogramm öffnet auch die cursor-variable, müssen Sie die IN-OUT-Modus."

Aber, ich kann code, ist (nur OUT-parameter):

create or replace procedure mycur_out(mc OUT mycurpkg.mytypecur)  as 
begin
    open mc for select * from mytable; 
end mycur_out;

und funktioniert gleich (IN OUT-parameter)

create or replace procedure mycur_inout(mc IN OUT mycurpkg.mytypecur) 
as
begin
    open mc for select * from table10;
end mycur_inout;

Auch, Es funktioniert mit dynamischen cursor zu:

create or replace procedure mycur_out_ref(mc out mycurpkg.mytyperefcur) 
as
begin
    open mc for 'select * from table10';
end mycur_out_ref;

Getestet hab ich die 3 Fälle direkt von oracle und aus VB6 mit ADO, und keine Probleme.
So, in diesen Fällen, gibt es einen Unterschied zwischen BEI Verwendung nur "OUT" und "IN-OUT" - Cursor-Parameter?

UPDATE
Der Grund warum ich Frage:

  • Wir Lesen von Daten mit Routinen ähnlich
    die Beispiele (öffnen Sie einfach den
    Cursor). Die cursor-Parametern
    immer sind "IN-OUT" (fragt mich nicht
    warum, versuche ich herauszufinden)
  • Die Routinen werden aufgerufen mit ADO/VB6
  • Nun, wir werden versuchen, einige der Routinen von JDBC, aber die
    adapter anscheinend nur akzeptiert AUS
    Parameter in diesen Fällen.
  • Schließlich der Hauptgrund, ich will zu ändern, die cursor-Parameter in DB
    - Routinen nur HERAUS, aber zuerst muss ich
    wollen Sie wissen, die Kollateralen Effekte
    von dieser änderung zu.

Dank!

Blick auf den code, ist nicht die Frage 'gibt es einen Unterschied zwischen OUT-und IN OUT-cursorparameter?'. Es gibt kein Beispiel mit einem IN-parameter.
Guter Punkt, JulesLt. Ich bin update-Frage. Danke!

InformationsquelleAutor Frajmen | 2010-08-20

Schreibe einen Kommentar