Das sd:err-block- Element

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.

Typ
Attribute
Keine Attribute zulässig
Child-Elemente


Kontaktformular:

Schreiben Sie mir und wir bauen gemeinsam Ihre neue Web-Datenbank!

Die Erläuterungen zum Datenschutz habe ich gelesen und stimme diesen zu.

© 2003-2019 Jürgen Auer, Berlin.