Я не уверен, что это именно то, что вам нужно, но это должно дать вам кое-что для работы:
CREATE OR REPLACE PACKAGE my_app_state
AUTHID DEFINER
IS
c_in_production CONSTANT BOOLEAN := TRUE;
END;
/
CREATE OR REPLACE PROCEDURE test_app_state
AUTHID DEFINER
IS
PROCEDURE my_proc1
IS
BEGIN
DBMS_OUTPUT.PUT_LINE ('1');
END;
PROCEDURE my_proc2
IS
BEGIN
DBMS_OUTPUT.PUT_LINE ('2');
END;
BEGIN
$if my_app_state.c_in_production $then
my_proc1;
$else
my_proc2;
$end
end;
/
EXEC test_app_state
Вы также можете использовать флаг условной компиляции. Если он не определен, он просто по умолчанию равен NULL, поэтому состояние дел по умолчанию «выключено».
CREATE OR REPLACE PROCEDURE test_app_state
AUTHID DEFINER
IS
PROCEDURE my_proc1
IS
BEGIN
DBMS_OUTPUT.PUT_LINE ('1');
END;
PROCEDURE my_proc2
IS
BEGIN
DBMS_OUTPUT.PUT_LINE ('2');
END;
BEGIN
$if $$cc_in_dev $then
my_proc1;
$else
my_proc2;
$end
end;
/