Your Browser is not longer supported

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

{{viewport.spaceProperty.prod}}

Pragmas in Routinen

Folgende Pragmas gibt es speziell für Routinen:

  • DEBUG ROUTINE zur Ausgabe von zusätzlichen Hinweisen oder Fehlerinformationen

  • DEBUG VALUE zur Ausgabe zusätzlicher Informationen für die SQL-Anweisungen SET in Routinen und RETURN in UDFs

  • LOOP LIMIT zur Begrenzung der Anzahl Schleifendurchläufe

Siehe Abschnitt „Pragmas und Annotationen".

Die Pragmas DEBUG ROUTINE und LOOP LIMIT wirken vor der SQL-Anweisung CALL und vor den DML-Anweisungen DECLARE CURSOR, DELETE, INSERT, MERGE, SELECT und UPDATE. Bei Angabe vor DML-Anweisungen wirken diese Pragmas auf alle UDFs und die darin enthaltenen Routinen der DML-Anweisung. Diese Pragmas haben vor SQL-Anweisungen in einer Routine keine Wirkung.

Daneben können auch andere Pragmas in der CALL-Anweisung und in Routinen verwendet werden.

Pragmas EXPLAIN, CHECK, LIMIT ABORT_EXECUTION

Diese Pragmas wirken vor der SQL-Anweisung CALL und vor den DML-Anweisungen DECLARE CURSOR, DELETE, INSERT, MERGE, SELECT und UPDATE. Bei Angabe vor DML-Anweisungen wirken sie auf alle UDFs und die darin enthaltenen Routinen der DML-Anweisung. Wenn eines dieser Pragmas vor einer SQL-Anweisung in einer Routine steht, dann wird es ignoriert.

Pragmas ISOLATION LEVEL, LOCK MODE

Wenn diese Pragmas vor einer CALL-Anweisung stehen, dann wirken sie sich nur auf die möglicherweise komplexen Aufrufwerte der CALL-Anweisung aus.

Diese Pragmas können auch vor SQL-Anweisungen in Routinen stehen. Sie haben dann bei DECLARE CURSOR, DELETE, INSERT, MERGE, SELECT und UPDATE die beschriebene Wirkung.

Wenn diese Pragmas vor einer IF-Anweisung stehen, dann wirken sie nur auf die Bedingungen der IF-Anweisung. Vor den in der IF-Anweisung enthaltenen Anweisungen können diese Pragmas ebenfalls angegeben werden.

Bei der SET-Anweisung wirken sich diese Pragmas auf die Auswertung des Ausdrucks auf der rechten Seite der Zuweisung aus.

Wenn diese Pragmas vor einer LOOP-, LEAVE- oder ITERATE-Anweisung stehen, dann werden sie ignoriert.

Wenn diese Pragmas vor einer FOR-Anweisung stehen, dann wirken sie nur auf die Cursordefinition der FOR Anweisung. Vor den in der FOR-Anweisung enthaltenen SQL-Anweisungen können diese Pragmas ebenfalls angegeben werden.

Wenn diese Pragmas vor einer WHILE-Anweisung stehen, dann wirken sie nur auf die Bedingung der WHILE-Schleife. Vor den in der WHILE-Anweisung enthaltenen SQL-Anweisungen können diese Pragmas ebenfalls angegeben werden.

Wenn diese Pragmas die UNTIL-Bedingung einer REPEAT-Anweisung beeinflussen sollen, dann müssen sie direkt vor UNTIL angegeben werden (nicht vor REPEAT). Vor den in der REPEAT-Anweisung enthaltenen SQL-Anweisungen können diese Pragmas ebenfalls angegeben werden.

Wenn diese Pragmas vor einer CASE-Anweisung stehen, dann wirken sie nur auf die Ausdrücke außerhalb der THEN- und ELSE-Anweisungsblöcke. Vor den in der CASE-Anweisung enthaltenen SQL-Anweisungen können diese Pragmas ebenfalls angegeben werden.

Bei der RETURN Anweisung wirken sich diese Pragmas auf die Auswertung des RETURN-Wertes aus.

Bei allen anderen Anweisungen innerhalb von Routinen haben diese Pragmas keine Wirkung.

Pragmas IGNORE, JOIN, KEEP JOIN ORDER, OPTIMIZATION, SIMPLIFICATION, USE

Wenn eines dieser Optimierungs-Pragmas vor einer CALL-Anweisung steht, dann wirkt es sich nur auf die Optimierung der möglicherweise komplexen Aufrufwerte der CALL-Anweisung aus.

Diese Pragmas können auch vor SQL-Anweisungen einer Routine stehen. Sie bewirken dann bei DECLARE CURSOR, DELETE, INSERT, MERGE, SELECT und UPDATE die beschriebene Optimierung.

Wenn diese Pragmas vor einer IF-Anweisung stehen, dann wirken sie nur bei der Optimierung der Bedingungen der IF-Anweisung. Vor den in der IF-Anweisung enthaltenen Anweisungen können diese Pragmas ebenfalls angegeben werden.

Diese Pragmas wirken sich bei der SET-Anweisung auf die Optimierung des Ausdrucks auf der rechten Seite der Zuweisung aus.

Wenn diese Pragmas vor einer LOOP-, LEAVE- oder ITERATE-Anweisung stehen, dann werden sie ignoriert.

Wenn diese Pragmas vor einer FOR-Anweisung stehen, dann wirken sie nur auf die Cursordefinition der FOR Anweisung. Vor den in der FOR-Anweisung enthaltenen SQL-Anweisungen können diese Pragmas ebenfalls angegeben werden.

Wenn diese Pragmas vor einer WHILE-Anweisung stehen, dann wirken sie nur auf die Bedingung der WHILE-Schleife. Vor den in der WHILE-Anweisung enthaltenen SQL-Anweisungen können diese Pragmas ebenfalls angegeben werden.

Wenn diese Pragmas die UNTIL-Bedingung einer REPEAT-Anweisung beeinflussen sollen, dann müssen sie direkt vor UNTIL angegeben werden (nicht vor REPEAT). Vor den in der REPEAT-Anweisung enthaltenen SQL-Anweisungen können diese Pragmas ebenfalls angegeben werden.

Wenn diese Pragmas vor einer CASE-Anweisung stehen, dann wirken sie nur auf die Ausdrücke außerhalb der THEN- und ELSE-Anweisungsblöcke. Vor den in der CASE-Anweisung enthaltenen SQL-Anweisungen können diese Pragmas ebenfalls angegeben werden.

Bei der RETURN Anweisung wirken sich diese Pragmas auf die Auswertung des RETURN-Wertes aus.

Bei allen anderen Anweisungen innerhalb von Routinen haben diese Pragmas keine Wirkung.

Pragma DATA TYPE, PREFETCH, UTILITY MODE

Diese Pragmas werden sowohl vor einer CALL-Anweisung als auch vor einer SQL-Anweisung einer Routine ignoriert.