plsql/Cursor-handle Ausnahme und zurück in den ausführungsablauf
Ich versuche ausführen von cursor und wollen es zum Abschluss der Schleife, auch wenn es eine Ausnahme.
Was ich versuche zu tun ist, "fangen", alle die Ausnahme und probaably log etwas oder nichts tun und dann wieder zurück zum Fluss . Hier ist, wie der code aussieht:
FOR line IN my_cursor
LOOP
begin
if<condition> then
GOTO pass;
else
<<do_something>>
exception
when others then
sys.dbms_output.put_line('say something');
end if;
<<pass>> null;
end
END LOOP;
Das Skript nicht kompilieren.
Es gibt wohl einige syntaktische Fehler mit der exception , aber ich bin auch nicht bewusst von der Semantik sehr gut. Wie ich bin nicht sicher, ob Sie wieder zurück zum ausführungsablauf nach dem Umgang mit einer Ausnahme.
p.s: Die DB 10g und es wird nicht WEITER in ihn . Also mit SPRINGEN.
- Auch
if
braucht einethen
undend if
. - thnx. Es war ein Tippfehler in der Frage.
- Könnten Sie überprüfen, ob eine der vorgeschlagenen Antworten sein könnten, qualifizierte sich als akzeptabel ? TIA
Du musst angemeldet sein, um einen Kommentar abzugeben.
Setzen Sie den code, den Sie ausführen wollen innerhalb der Schleife in einem eigenen block, und dann können Sie die Blöcke Ausnahme Abschnitt behandeln Probleme, die während der loop-iteration.
Einmal die Ausnahme, die für die iteration behandelt wird, der next-Schleife die iteration startet
z.B.:
Um dies zu verdeutlichen eine weitere, im Beispiel unten habe ich deklariert eine lokale variable, die vom Typ exception. Ich bin Durchlaufen die zahlen von 1 bis 10, während die zweite Schleife, iteration, die if-Anweisung ist wahr, und die Verarbeitung geht auf den exception-handler. Nachdem die Ausnahme behandelt wird, die nächste iteration der Schleife beginnt.
<<do_something>>
muss nur ausgeführt werden, wenncondition
ist falsch. Nicht immer...<<do_something>>
wurde immer ausgeführt.exception
block kann nicht drinnen sitzen alles außerbegin
block. Nun deine Frage hat es in derelse
Teil einerif
- Anweisung. Wenn Sie möchten, dass die Ausnahme, benötigen Sie einebegin
nach derelse
dannexception
auf den Punkt, Sie sind fertig mit alles, was in derelse
und schließlich einend;
zu schließen, diebegin
vor derend if
.