Exception

<< Generator/Sequence | IBExpert | Benutzerdefinierte Funktionen - UDF >>

Die deutschsprachige Dokumentation wird seit dem 26. Juli 2016 nicht mehr gepflegt. Aktuelle und vollständige Dokumentation finden Sie auf der englischsprachigen Webseite: IBExpert Documentation


Exception

Exceptions sind benutzerdefinierte Fehlermeldungen, die speziell für eine Datenbank geschrieben wurden und in der Datenbank zur Verwendung in Stored Procedures und Triggern gespeichert werden.

Wenn in einem Trigger festgestellt wurde, dass der Wert in einer Tabelle nicht korrekt ist, wird die Exception abgefeuert. Dies führt zu einem Rollback der gesamten Transaktion, die die Client-Anwendung versucht zu committen. Exceptions können überlappen.

Sie können von verschiedenen Modulen einer Anwendung geteilt werden und sogar von verschiedenen Modulen, die sich eine Datenbank teilen. Sie bieten einen einfachen Weg, um die Handhabung der vorprogrammierten Eingabefehler zu standardisieren. Exceptions werden typischerweise zur Implementierung von Programmlogik verwendet. Beispielsweise möchten Sie nicht, dass ein Benutzer einen Artikel aus dem Lagerbestand verkauft, der bereits von einem anderen Benutzer für dessen Kunden reserviert wurde.

Exceptions sind Datenbankobjekte und sind Teil der Metadaten der Datenbank und können, wie alle anderen Objekte in Firebird/InterBase® im IBExpert DB Explorer erzeugt, modifiziert und gelöscht werden.

Die maximale Größe einer Exception-Meldung wurde in Firebird 2.0 von 78 auf 1021 Bytes erhöht.

zurück zum Seitenanfang

Neue Exception/Exceptions-Editor

Eine neue Exception kann in einer verbundenen Datenbank entweder mit dem Menüpunkt Datenbank / Neue Exception, dem entsprechenden Symbol in der Symbolleiste Neues Datenbankobjekt, oder mit dem Rechtsklickmenü des DB Explorers (oder Tastaturürzel [Strg + N]), wennn der Exception-Kopf der entsprechenden verbundenen Datenbank markiert ist. Ein Neue Exception-Dialog erscheint mit seiner eigenen Symbolleiste:

Alternativ kann eine neue Exception dirket im IBExpert SQL Editor mit der folgenden Anweisung erzeugt werden:

 CREATE EXCEPTION <Exception_Name>
 "Exception_Text";

Exceptiontexte können als Unicode (UTF8) dargestellt werden, und UTF8 wird auch für Beschreibungen und die DDL Seite unterstützt.

Der Exceptions-Editor kann direkt aus dem DB Explorer per Doppelklick auf einen vorhandenen Exception-Namen geöffnet werden. Er kann ebenfalls direkt von einer Prozdeur oder einem Trigger, die eine Exception enthalten gestartet werden, einfach per Doppelklick auf den Exception-Namen im SQL-Text auf der Seite Bearbeiten Prozedureneditor oder im Triggereditor auf der Seite Trigger.

Neu seit Firebird 3.0: Support für Privilegien auf Exceptions implementiert in IBExpert Version 2014.06.17.

Exception-Seite

Der neue Exception-Name kann zu der Liste, die alle Exceptions der aktiven Datenbank anzeigt hinzugefügt werden und der Exception-Text kann eingegeben werden. Bitten seien Sie vorsichtig im Umgang mit Sonderzeichen! Besonders, wenn Sie ältere Versionen von InterBase® verwenden, sollte vorzugsweise von der Verwendeung von Sonderzeichen abgesehen werden. In neueren Versionen sollten diesbezüglich keine Probleme auftreten, vorausgesetzt, der korrekte Zeichensatz wurde festgelegt. Die Exception-ID wird automatisch der Datenbank zugeordnet, wenn der Commit der Exception erfolgt ist.

Nach Erzeugung einer Exception muss diese in eine Stored Procedure oder einen Trigger eingebunden werden, um festzulegen, unter welchen Umständen die Exception erscheinen soll. Unter Exception hervorrufen finden Sie Details.

Abhängigkeiten

Weiteres finden Sie unter Tabelleneditor / Abhängigkeiten.

DDL

Seit IBExpert Version 2015.09.15 beinhaltet das DDL Skript nun auch Privilegien auf Exceptions (Firebird 3).

Weiteres finden Sie unter Tabelleneditor / DDL.

Vergleich

Weiteres finden Sie unter Tabelleneditor / Vergleich.

To-Do

Weiteres finden Sie unter Tabelleneditor / To-Do.

zurück zum Seitenanfang

Exception hervorrufen

Die EXCEPTION-Anweisung wird verwendet, um eine aufrufende Anwendung auf eine Exception hinzuweisen. Die aufrufenden Anweisung kann ein Trigger, eine Stored Procedure oder ein anderes Programm sein. Verwenden Sie das Schlüsslewort EXCEPTION, um eine Exception in einem Trigger oder einer Stored Procedure hervorzurufen:

 EXCEPTION <Exception_Name>;

Wenn eine Exception hervorgerufen wird, findet folgendes statt:

  1. Die Exception stoppt den Trigger oder die Prozedur.
  2. Jede Anweisung in dem Trigger oder der Prozedur, die auf die EXCEPTION-Anweisung folgt, wird nicht ausgeführt. Im Falle eines BEFORE-Triggers wird die Aktualisierung, die vom Trigger ausgelöst wurde abgebrochen.
  3. Der Trigger oder die Prozedur gibt eine Fehlermeldung an die aufufende Anwendung zurück.

Exceptions können in einer Stored Procedure oder einem Trigger mit einer WHEN Anweisung eingeschlossen und gehandhabt werden.

Ein Beispiel einer hervorgerufenen Exception in einer Prozedur finden Sie in der EMPLOYEE-Datenbank. Die Exception REASSIGN_SALES wurde zuerst erzeugt:

und dann in die DELETE_EMPLOYEE-Prozedur eingebunden:

zurück zum Seitenanfang

Bearbeite Exception

Exceptions können direkt im Exceptions-Editor bearbeitet werden, der per Doppelklick auf den Exception-Namen im DB Explorer geöffnet wird. Alternativ können Sie den Rechtsklickmenüpunkt Bearbeite Exception im DB Explorer oder die Tastenkombination [Strg + O] verwenden.

Der Exception-Editor erscheint, wo Sie Änderungen am Exceptionnamen und am Exception-Text wunschgemäß vornehmen können. Änderungen am Exception-Text können auch dann vorgenommen werden, wenn andere Objekt von der Exception abhängen. Der Exception-Name kann in dem Fall aber nicht geändert werden.

Die SQL-Syntax lautet:

 ALTER EXCEPTION <exception_name>
 'New Exception Text';

Eine Exception kann nur von ihrem ursprünglichen Erzeuger, vom SYSDBA oder einem Benutzer mit Grundrechten des Betriebssystems geändert werden.

Einige neue Syntaxe zur Änderung von Exceptions wurden in Firebird 2.0 eingeführt. Weiteres finden Sie unter Firebird 2.0.4 Release Notes: New syntaxes for changing exceptions.

zurück zum Seitenanfang

Erzeugen oder ändern einer Exception

In Firebird 2.0 eingeführt, erzeugt CREATE OR ALTER EXCEPTION eine Exception, wenn diese nicht schon vorhanden ist. Wenn diese vorhanden ist, wird die Definition geändert, ohne dass die Abhängigkeiten davon betroffen sind.

Siehe auch:
englischsprachig:
CREATE OR ALTER EXCEPTION

Exception erneut erzeugen

Neu seit Firebird 2.0: Die DDL-Anweisung RECREATE EXCEPTION steht jetzt in der DDL zur Verfügung. Die Semantik ist dieselbe, wie für andere RECREATE-Anweisungen.

Siehe auch:
englischsprachig:
RECREATE EXCEPTION

Lösche Exception

Eine Exception kann nicht gelöscht werden, wenn sie von anderen Prozeduren oder Triggern verwendet wird, es sei denn die Abhängigkeiten werden gelöscht. Jede Abhängigkeit ist im Exceptions-Editor auf der Seite Abhängigkeiten aufgelistet, wo sie direkt gelöscht werden kann, wenn gewünscht.

Um eine Exception zu löschen, verwenden Sie den Rechstklickmenüpunkt Lösche Exception... im DB Explorer oder [Strg + Entf]. IBExpert bittet um Bestätigung:

bevor die Exception endgültig gelöscht wird. Einmal gelöscht, kann sie nicht zurückgeholt werden.

DIe SQL-Syntax lautet:

 DROP EXCEPTION <exception_name>;

Eine Exception kann nur von ihrem ursprünglichen Erzeuger, vom SYSDBA oder einem Benutzer mit Grundrechten des Betriebssystems gelöscht werden.

Siehe auch:
deutschsprachig:
Stored Procedure
Trigger
Abhängigkeitenansicht
englischsprachig:
Writing exceptions
CREATE OR ALTER EXCEPTION
RECREATE EXCEPTION
Stored procedure and trigger language

zurück zum Seitenanfang
<< Generator/Sequence | IBExpert | Benutzerdefinierte Funktionen - UDF >>