So zeigen Sie eine sys_refcursor-Daten im DataGrid von TOAD an

8

Bitte ich brauche Hilfe. (Ich habe viel gesucht und mehr verwirrt.)

Ich benutze Toad 9.7.25 und ich habe diese Prozedur (in einem Paket) gemacht

%Vor%

Im SQL-Editor der Kröte möchte ich diese Prozedur ausführen und die Cursor-Ergebnisse in dem DataGrid der Kröte anzeigen:

%Vor%

Wenn ich das Skript (F9) ausführe und die Variable: to_grid type cursor setze, Ich bekomme den nächsten Fehler:

"ORA-24338: Anweisungshandle nicht ausgeführt"

Was kann das Problem sein?

Vielen Dank im Voraus.

Danke vier deiner Beiträge ... hat gut funktioniert!

Aber jetzt haben Sie eine andere Frage ... Wenn ich die einfache Abfrage (wählen Sie c1, c2, c3 aus der Tabelle ...) für einen komplexeren wie folgt ersetzen:

%Vor%

Warum können die Ergebnisse nicht angezeigt werden?
(Die Abfrage funktioniert gut, wenn ich sie direkt in einem TOAD SQL-Editor ausführe)

Nochmals vielen Dank .... !!!

    
Arzamm 05.10.2012, 13:54
quelle

2 Antworten

20

Nachdem Sie F9 gedrückt haben, erscheint der Dialog "Variablen" und Sie wählen Type = Cursor aus der Dropdown-Liste und drücken dann OK:

Der Grund dafür, dass Sie den Fehler "ORA-24338: Anweisung handle not executed" erhalten, liegt daran, dass Sie den Cursor vor dem Zugriff schließen.

Dies ist der Prozess, der passiert:

  1. Ausführen der Prozedur
  2. Die Anweisung OPEN gibt einen Zeiger auf die Ergebnismenge im Speicher zurück (gibt aber keine Daten zurück)
  3. CLOSE-Anweisung verwirft die Ergebnisse, bevor auf sie zugegriffen wird
  4. Prozeduraufruf endet
  5. Der Clientaufrufer (in diesem Fall TOAD) versucht, auf den Ergebnisdatenstrom zuzugreifen, aber der Zeiger ist ungültig, so dass nichts gelesen werden kann und der Fehler ausgelöst wird

Lösung: Entfernen Sie die close lcursor; -Anweisung.

    
wweicker 05.10.2012, 16:29
quelle
1

Da Ihre Prozedur nur eine select-Anweisung ausführt, verwenden Sie besser eine Funktion wie

%Vor%

Schließen Sie lcursor hier nicht, schließen Sie von Ihrer aufrufenden Anweisung, denn wenn Sie lcursor schließen, können Sie keine Ergebnisse sehen.

Und führen Sie als

aus %Vor%

von Kröte, doppelklicken Sie den Cursor in Datagrid, um die Ergebnisse zu sehen.

    
user75ponic 05.10.2012 15:37
quelle