Ich möchte eine ASSERT-Routine verwenden, die funktional derjenigen in anderen Sprachen ähnelt, dh ein Konstrukt (sei es eine Prozedur, eine Syntax ...).
ASSERT( <condition>, <msg>)
Wenn das <condition>
im ersten Argument übergebene Argument falsch ist, wird mit der angegebenen <msg>
beschreibenden Nachricht eine Ausnahme ausgelöst.
Ich weiß, dass dies trivial ist, aber ich frage, ob es einen Standard gibt, der mit dem DBMS geliefert wird.
Es wäre unpraktisch, ein eigenes Paket zu schreiben oder aus Paketen von Drittanbietern zu importieren, da es für jedes Projekt, an dem ich arbeite, vollständig portierbar und transparent sein muss.
oracle
error-handling
user881430
quelle
quelle
Antworten:
In SQL oder PL / SQL ist keine Zusicherungsprozedur integriert, daher müssen Sie Ihre eigene schreiben.
Hierfür gibt es zwei Möglichkeiten. Sie können entweder manuell eine Ausnahme auslösen, wie in diesem Oracle-Artikel beschrieben , oder Sie können einen Wrapper für die
raise_application_error
Prozedur schreiben , der im Abschnitt zur Behandlung von Oracle-Ausnahmen in der Dokumentation dokumentiert ist.Ich füge hinzu, dass Ausnahmen für diese Art von Szenario entwickelt wurden, also sollten Sie Ihren Programmiererhut für eine Sekunde abnehmen und Ihren DBA-Hut verwenden :)
quelle
Das eingebaute DBMS_ASSERT- Paket ist eine eng gefasste Version dessen, wonach Sie suchen. Für andere Behauptungen, die Phil richtig macht, müssen Sie Ihre eigenen bauen. Hier ist eine einfache Demonstration der zweiten Option in Phils Antwort +1 :
quelle