Das Pragma DEBUG VALUE stellt zusätzliche Informationen für folgende SQL-Anweisungen zur Verfügung:
SET in Routinen (Prozeduren und User Defined Functions (UDF))
RETURN in User Defined Functions (UDF)
Diese Informationen können über den View SYS_ROUTINE_ERRORS des SYS_INFO_SCHEMA gelesen werden, siehe "SYS_ROUTINE_ERRORS".
Das Pragma DEBUG VALUE ist derzeit nur vor diesen SQL-Anweisungen wirksam.
DEBUG VALUE [LEVEL
vorzeichenlose_ganzzahl ]
vorzeichenlose_ganzzahl
Bei vorzeichenlose_ganzzahl > 0 werden für die o.g. Anweisungen zusätzliche Informationen dann gesammelt, wenn das Pragma DEBUG ROUTINE vor der SQL-Anweisung CALL bzw. vor einer DML-Anweisung (für darin enthaltene Routinen) steht. Zusätzlich muss vorzeichenlose_ganzzahl bei DEBUG ROUTINE größer oder gleich vorzeichenlose_ganzzahl bei DEBUG VALUE sein.
Folgende Informationen werden dann gesammelt:
bei SET der zugewiesene Wert und der Name des Zielfeldes (Parameter oder lokale Variable)
bei RETURN der zurückgegebene Wert
Bei Zeichenketten werden lange Werte ggf. am Ende abgeschnitten.
vorzeichenlose_ganzzahl = 1 ist der Standardwert, wenn die Klausel LEVEL
nicht angegeben wird.
Bei vorzeichenlose_ganzzahl = 0 hat das Pragma keine Wirkung.
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.
Beispiel
Den SET-Anweisungen einer Prozedur kann das Pragma DEBUG VALUE mit unterschiedlichen Werten für vorzeichenlose_ganzzahl vorangestellt werden. Durch Aufruf der Routine mit dem Pragma DEBUG ROUTINE und unterschiedlichen Werten für vorzeichenlose_ganzzahl werden Informationen in unterschiedlichem Umfang gesammelt.
CREATE PROCEDURE P (OUT par1 INTEGER,OUT par2 INTEGER) MODIFIES SQL DATA BEGIN --%PRAGMA DEBUG VALUE LEVEL 3 SET par1 = 42; --%PRAGMA DEBUG VALUE LEVEL 10 SET par2 = 43; END
Bei folgendem Prozeduraufruf wird nur die erste Zuweisung (par1=42
) aufgezeichnet:
-- %PRAGMA DEBUG ROUTINE LEVEL 5
CALL P(mypar1, mypar2)
Bei folgendem Prozeduraufruf werden beide Zuweisungen aufgezeichnet:
-- %PRAGMA DEBUG ROUTINE LEVEL 20
CALL P(mypar1, mypar2)
Die Pragmas DEBUG VALUE können unverändert im Text der Routine verbleiben. Sie kommen erst bei entsprechender vorzeichenlose_ganzzahl im Pragma DEBUG ROUTINE zur Wirkung.