Container für die Ausgabe einer Fehlermeldung. Bei jeder Aktion wird eine Variable mit einem Zahlwert
bereitgestellt, die mit dem
sd:err-number
-Element abgefragt werden kann. Wurde die letzte Aktion erfolgreich
ausgeführt, so liefert diese Variable den Wert 0. Negative Werte deuten auf Fehler hin, bei welchen server-daten-Code ausgeführt
und abgebrochen wurde. In diesen Fällen ist der Sql-Code fehlerfrei. Der Abbruch erfolgt bsp. aufgrund von verweigerten
Rechten (-1), fehlerhaften Nutzereingaben (-2, Eingabe von Text in ein Datumsfeld), Constraints- und Fremdschlüsseleinschränkungen
(-3, -4) oder aufgrund von eher seltenen Fällen (-5, kleiner -100), bei welchen bsp. ein Tabellenname innerhalb der Ausführung einer
Ausgabeseite geändert wird und der noch gecachte Name nicht mehr gefunden werden kann.
Positive Werte verweisen darauf, daß das server-daten-Rahmenprogramm eine vom Benutzer erstellte
Abfrage mit Parametern aus der aktuellen Ausgabeseite aufgerufen hat und diese Ausführung vom SqlServer abgebrochen wurde.
Das zum Abbruch führende Problem kann in der Abfrage (gelöschte Tabelle), in der Ausgabeseite (falsche Parameternamen) oder
durch die Eingaben des Lesers (falscher Datentyp für Parameter) verursacht worden sein.
Um in diesen Fällen verschiedene passende Fehlermeldungen ausgeben oder ausblenden zu können, darf das
sd:err-block
-Element mehrere
sd:err-handler
-Elemente enthalten. Die dort definierten
sd:test
-Attribute können entweder Ganzzahlen,
kommagetrennte Zahlenfolgen (10,15,20), Zahlenbereiche (20 30) oder Mischformen der beiden letzten Typen
(500 800,850 900) enthalten. Gegenüber sonstigen Konventionen ist zu beachten, daß Zahlenbereiche hier durch ein Leerzeichen
zwischen zwei Ganzzahlen ausgedrückt werden. Dies ermöglicht es, mit (-5 -3) auch die Menge {-5, -4, -3} zu deklarieren, ohne
daß die Verwendung des Vorzeichens uneindeutig ist. In Abhängigkeit vom Rückgabewert wird nur das
sd:err-handler
-Element
mit der passenden Nummer ausgeführt.
Typische vom SqlServer gemeldete Fehler können bsp. sein:
- 207, 208: Ungültige Spalte oder ungültige Tabelle. Die Abfrage wurde erstellt, alle Objekte waren gültig,
nun ist eine Spalte bzw. Tabelle umbenannt oder gelöscht worden
- 2812: Ungültiger Prozedurname, die Abfrage wurde nach dem Erstellen der Ausgabeseite umbenannt oder gelöscht.
- 8145: Falscher Parametername: Der im sd:sql-param
-Attribut des sd:with-param
-Elements
angegebene Parametername fehlt in der Abfrage, er mag dort umbenannt worden sein.
- 8144: Zu viele Parameter. Parameter dürfen weggelassen werden, es dürfen jedoch nicht zu viele Parameter übergeben werden.
- 8114: Konvertierungsprobleme: Es wurde ein Parameter vom Typ Integer definiert, der vom Leser eingegebene Text läßt
sich jedoch nicht in eine Zahl konvertieren.
So kann der Ersteller der Ausgabeseite festlegen, daß nur bei Konvertierungsproblemen dem eigentlichen Leser eine
seitenspezifische Hilfe angezeigt wird und daß in allen anderen Fällen lediglich eine unspezifische Fehlermeldung auszugeben sei.
Die von server-daten bereitgestellte Fehlerbeschreibung steht im
sd:err-message
-Element
zur Verfügung.
Wurde das
sd:test
-Attribut mit 0 bzw. -1 belegt, so wird das übergeordnete
sd:err-handler
-Element
ausgeführt, falls kein oder ein von server-daten erzeugter Fehler aufgetreten ist. Im Fall ohne Fehler kann bsp. eine Meldung
'Keine Fehler aufgetreten' oder 'Befehl erfolgreich ausgeführt' ausgegeben werden. Ein Attributwert = -2 führt zum Ausführen
des Elements, falls ein Sql-Fehler aufgetreten ist, für welchen kein spezieller
sd:err-handler
existiert.
Dies entspricht dem otherwise-Zweig bei Fehlern in der benutzerdefinierten Logik.
Kontaktformular:
Schreiben Sie mir und wir bauen gemeinsam Ihre neue Web-Datenbank!