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