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.