Das Pragma DEBUG ROUTINE stellt zusätzliche Informationen zu einem möglicherweise fehlerhaften Ablauf einer Routine zur Verfügung. Diese Informationen können über den View SYS_ROUTINE_ERRORS des SYS_INFO_SCHEMA gelesen werden, siehe "SYS_ROUTINE_ERRORS".
Das Pragma DEBUG ROUTINE wirkt nur außerhalb von Routinen. Es wirkt vor der SQL-Anweisung CALL und vor den DML-Anweisungen DECLARE CURSOR, DELETE, INSERT, MERGE, SELECT und UPDATE. Bei Angabe vor DML-Anweisungen wirkt das Pragma auf alle User Defined Functions (UDF) und die darin enthaltenen Routinen der DML-Anweisung.
DEBUG ROUTINE [ALL | USER] [LEVEL
vorzeichenlose_ganzzahl ]
vorzeichenlose_ganzzahl
Bei vorzeichenlose_ganzzahl > 0 werden für die durchgeführten SQL-Anweisungen der aktuellen Routine zusätzliche Informationen gesammelt.
vorzeichenlose_ganzzahl = 1 ist der Standardwert, wenn die Klausel LEVEL
nicht angegeben wird.
Bei vorzeichenlose_ganzzahl = 0 wird das Pragma ignoriert.
Folgende Vorgehensweise bietet sich an:
Das Pragma ist zunächst zu Testzwecken mit einem Wert > 0 in einer Anwendung aktiv und wird dann später (ohne Änderung der Textlänge) durch den Wert 0 deaktiviert.
USER
Abhängig vom eingestellten LEVEL
werden Informationen für die SQL-Anweisungen gesammelt, denen das Pragma DEBUG VALUE (siehe "Pragma DEBUG VALUE") vorangestellt ist.
ALL
Neben den bei USER erwähnten DEBUG-Informationen werden (unabhängig vom eingestellten LEVEL
) auch allgemeine DEBUG-Informationen erstellt.
Beispielsweise wird jeder von einer fehlerhaften SQL-Anweisung gemeldete SQLSTATE oder SQLrowcount aufgezeichnet. Interne Aufrufe von Routinen werden ebenfalls aufgezeichnet. Auch die Position einer SQL-Anweisung innerhalb des Textes einer Routine wird normalerweise aufgezeichnet.