![]() |
oracle: frage zu exceptions in plSQL
wenn eine vordefinierte exception, z.b. NO_DATA_FOUND geworfen wird, bezieht sich das ja nehme ich an immer auf das erste vorkommnis dieses fehlers.
was ist aber nun, wenn ich danach noch abfragen habe, die auch so einen fehler werfen könnten? woher kann ich wissen, wer bei mehreren statements jetzt dafür verantwortlich war, wenn eine exception geworfen wurde? oder ists generell besser, deswegen auf vordefinierte exceptions zu verzichten und lieber selbst welche zu definieren, wo´s dann klar ist, wer was geworfen hat? zur besseren vorstellung: Code:
BEGIN |
ok, ich weiß mittlerweile, daß ich mir über SQLCODE den oracle-errorcode holen kann, so daß ich sehen kann, welches statment ggf. die exception geworfen hat.
eine frage bleibt allerdings noch offen: werfen an sich kann sie jedes statement, oder? also da wird nicht unterschieden, das muß ich wenn schon selbst machen. z.b. Code:
DECLARE |
Punkt 1: In nem PL/SQL-Block musst jedenfalls in ne Variable oder in nen Record selektieren, sonst wird das nix. Das Ergebnis muss ja irgendwo rein ;-). Nachdem ja evt. mehr als 1 Record zurückkommen kann, solltest du einen cursor bzw. ne cursor-for-loop verwenden.
Zu Deinem Prob: Also ich würde sagen, Du machst es entweder mit flags so wie du's vorgeschlagen hast oder du machst Unterblöcke Code:
DECLARE Kommt halt drauf an was du brauchst (weiter in Verarbeitung oder abbrechen). Natürlich kann man auch alles auslagern, zentral abfangen, mit cursor-Attributen (found, notfound) lösen - mehrere Ergebnisse cursor-for-loop, usw. ... |
hi,
daß man unterblöcke bilden kann, war mir nicht bekannt, das wäre natürlich auch eine elegante möglichkeit der lösung. danke für deine antwort. |
Alle Zeitangaben in WEZ +2. Es ist jetzt 12:05 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
© 2009 FSL Verlag