Your Browser is not longer supported

Please use Google Chrome, Mozilla Firefox or Microsoft Edge to view the page correctly
Loading...

{{viewport.spaceProperty.prod}}

SIGNAL - Fehler in Routine melden

SIGNAL meldet in einer Routine explizit einen Fehler oder einen selbst definierten SQLSTATE.

SIGNAL löscht den aktuellen Diagnosebereich und trägt entsprechende Diagnoseinformationen in den aktuellen Diagnosebereich ein.

SIGNAL ist eine der Diagnoseanweisungen in Routinen. Detaillierte Informationen zum Einsatz und zur Wirkung von SIGNAL finden Sie im Abschnitt „Diagnoseinformationen in Routinen".



SIGNAL { fehlername | sqlstate } [SET diagnose_info ]


sqlstate ::= SQLSTATE [VALUE] alphanumerisches_literal

diagnose_info ::= MESSAGE_TEXT= message

message ::= { alphanumerisches_literal | lokale_variable | routinenparameter }



fehlername

Name für einen Fehler oder einen SQLSTATE. fehlername wird in den lokalen Daten einer Routine definiert, siehe „Lokale Daten".


sqlstate

Explizite Angabe eines selbst definierten SQLSTATEs (alphanumerisches Literal der Länge 5), siehe Abschnitt „Selbst definierte SQLSTATEs".


MESSAGE_TEXT=alphanumerisches_literal

Beliebiger Informationstext (maximale Länge: 120 Zeichen). Die Textlänge wird in MESSAGE_LENGTH und MESSAGE_OCTET_LENGTH eingetragen.


MESSAGE_TEXT=lokale_variable / routinenparameter

Als Informationstext wird der Wert der lokalen Variablen oder des angegebenen Routinen-Parameters eingetragen.
Der Datentyp von lokale_variable / routinenparameter muss mit dem Datentyp VARCHAR(120) verträglich sein. Es gelten die Regeln im Abschnitt „Werte in Prozedurparameter (Ausgabe) oder lokale Variable eintragen". Die Textlänge wird in MESSAGE_LENGTH und MESSAGE_OCTET_LENGTH eingetragen.


SET MESSAGE TEXT nicht angegeben:

Die Diagnoseinformationen MESSAGE_TEXT, MESSAGE_LENGTH und MESSAGE_OCTET_LENGTH werden mit den entsprechenden NULL-Werten versorgt.


Beispiele (siehe auch "Diagnoseinformationen in Routinen" )


Einen selbstdefinierten SQLSTATE melden:

SIGNAL SQLSTATE VALUE '46SA5';

Eine Bedingung mit Informationstext melden:

SIGNAL end_job SET MESSAGE_TEXT='The end is near!';

Siehe auch

COMPOUND, CREATE FUNCTION, CREATE PROCEDURE, GET DIAGNOSTICS, RESIGNAL