Your Browser is not longer supported

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

{{viewport.spaceProperty.prod}}

GET DIAGNOSTICS - Diagnoseinformationen ausgeben

GET DIAGNOSTICS ermittelt Informationen zu einer zuvor in einer Routine ausgeführten SQL-Anweisung und trägt diese in einen Prozedurparameter vom Typ INOUT oder OUT oder eine lokale Variable ein. Die Informationen beziehen sich auf die Anweisung selbst oder auf die davon betroffenen Objekte der Datenbank.

GET DIAGNOSTICS ändert weder Inhalt noch Reihenfolge von Diagnosebereichen. D.h. aufeinander folgende GET DIAGNOSTICS-Anweisungen werten dieselbe Diagnoseinformation aus.

GET DIAGNOSTICS ist eine der Diagnoseanweisungen in Routinen, siehe „Diagnoseinformationen in Routinen".



GET [CURRENT | STACKED] DIAGNOSTICS

    { anweisungs_info [, anweisungs_info ] ...] |

      CONDITION bedingungs_info [, bedingungs_info ]... }


anweisungs_info ::= name1 = ROW_COUNT


bedingungs_info ::= name2 =

{
   CONDITION_IDENTIFIER |
   RETURNED_SQLSTATE |
   MESSAGE_TEXT |
   MESSAGE_LENGTH |
   MESSAGE_OCTET_LENGTH
}


name1, name2 ::= { lokale_variable | routinenparameter }



CURRENT

Die Diagnoseinformation für die zuletzt ausgeführte SQL-Anweisung wird ausgegeben.

Mit dieser Anweisung wird normalerweise die Diagnoseinformation einer fehlerfrei ausgeführten SQL-Anweisung ausgegeben.

Die SQL-Anweisung kann aber auch nach einem SQLSTATE eine Fehler-Routine mit der Fehlerbehandlung CONTINUE durchlaufen haben (siehe „Lokale Fehler-Routinen" ) und GET DIAGNOSTICS ist die nächste Anweisung in der Routine.Eine lokale Fehler-Routine hat einen eigenen Diagnosebereich. Mit CURRENT wird die Diagnoseinformation der zuletzt in der Fehler-Routine ausgeführten SQL-Anweisung ausgegeben. Die Diagnoseinformation der auslösenden SQL-Anweisung wird mit STACKED ausgegeben.


STACKED

Die Diagnoseinformation der SQL-Anweisung, deren SQLSTATE die Fehler-Routine ausgelöst hat, wird ausgegeben.
STACKED darf nur in einer lokalen Fehler-Routine angegeben werden.


name1, name2

name1 und name2 bezeichnen lokale Variable, Prozedur- oder UDF-Parameter in die die nach dem Gleichheitszeichen beschriebene Information eingetragen wird. Der Datentyp von name1 bzw. name2 muss mit dem Datentyp der einzutragenden Information verträglich sein. Es gelten die Regeln im Abschnitt „Werte in Prozedurparameter (Ausgabe) oder lokale Variable eintragen".


name1=ROW_COUNT

name1 wird die Anzahl der bearbeiteten Sätze einer der folgenden erfolgreich ausgeführten SQL-Anweisung zugewiesen: insert_anweisung, update_searched_anweisung, delete_searched_anweisung, merge_anweisung. Sonst ist der Wert undefiniert.

Datentyp: DECIMAL(31)


name2=CONDITION_IDENTIFIER

name2 wird ggf. der Name der durch eine SIGNAL- oder RESIGNAL-Anweisung gemeldeten Bedingung zugewiesen. Sonst wird eine Zeichenkette der Länge 0 zugewiesen.

Datentyp: VARCHAR(31)


name2=RETURNED_SQLSTATE

name2 wird ggf. der Wert des gemeldeten SQLSTATEs zugewiesen. Sonst wird eine Zeichenkette der Länge 0 zugewiesen.

Datentyp: VARCHAR(5)


name2=MESSAGE_TEXT

name2 wird ggf. der Meldungstext zugewiesen wenn in der SIGNAL- oder RESIGNAL-Anweisung MESSAGE_TEXT angegeben wurde. Sonst wird eine Zeichenkette der Länge 0 zugewiesen.

Datentyp: VARCHAR(120)


name2=MESSAGE_LENGTH

name2 wird ggf. die Länge des Meldungstexts zugewiesen wenn in der SIGNAL- oder RESIGNAL-Anweisung MESSAGE_TEXT angegeben wurde. Sonst wird der Wert 0 zugewiesen.

Datentyp: INTEGER


name2=MESSAGE_OCTET_LENGTH

name2 wird ggf. die Länge des Meldungstexts in Byte zugewiesen wenn in der SIGNAL- oder RESIGNAL-Anweisung MESSAGE_TEXT angegeben wurde. Sonst wird der Wert 0 zugewiesen.

Datentyp: INTEGER


Beispiele (siehe auch "Diagnoseinformationen in Routinen" )


Diagnoseinformationen der letzten SQL-Anweisung ausgeben:

GET CURRENT DIAGNOSTICS counter1=ROW_COUNT;


Diagnoseinformationen der SQL-Anweisung, die die Fehler-Routine ausgelöst hat, ausgeben::

GET STACKED DIAGNOSTICS CONDITION
    var1=RETURNED_SQLSTATE,
    var2=MESSAGE_LENGTH, var3=MESSAGE_TEXT; 

Siehe auch

COMPOUND, CREATE FUNCTION, CREATE PROCEDURE, RESIGNAL, SIGNAL