Bedingte Compilierung ist ein nettes Feature, um z.B. Debug- oder Test-Code aus einer Produktionsumgebung rauszuhalten, ohne den Quelltest zu duplizieren.
Oracle unterstützt dies seit der Version 10.2.
So gehts:
Die Befehle für Conditional Defines sind $IF, $THEN, $ELSE und $END. Die Variablen werden mittels $$ angesprochen, also z.B.
Create or replace Function foobar (v_para1 integer, v_para2 integer) return integer is Begin $IF $$debug_flag $THEN dbms_output.put_line ('Calling foobar with ' || v_para1 || ', ' || v_para2); $END return v_para1 * v_para2; End;
Spielt man diese Funktion ein und ruft sie anschliessend auf, so wird keine Ausgabe im Server-Output erscheinen.
Dies muss man durch
ALTER FUNCTION foobar COMPILE PLSQL_CCFLAGS = 'debug_flag:TRUE' REUSE SETTINGS;
aktivieren.
Dann gibt es beim Aufruf die erwartete Ausgabe.
Natürlich kann man den Conditional Define auch wieder zurücksetzen, so dass man keine Ausgabe mehr erhält.
ALTER FUNCTION foobar COMPILE PLSQL_CCFLAGS = 'debug_flag:FALSE' REUSE SETTINGS;