Es gibt eine Möglichkeit, dies zu tun, vorausgesetzt, Sie haben 10 g oder mehr. Es heißt Bedingte Kompilierung. Dies ist ein sehr nettes Feature, das eine spezielle Syntax bereitstellt, sodass wir unseren PL/SQL-Code während der Kompilierung ändern können.
Zufällig habe ich diese Funktion genau dazu verwendet, private Pakete in einer Spezifikation offenzulegen, damit ich UTPLSQL-Tests gegen sie ausführen kann.
Hier ist die spezielle Syntax:
create or replace package my_pkg
as
$IF $$dev_env_test $THEN
PROCEDURE private_proc;
$END
FUNCTION public_function return date;
end my_pkg;
/
Diese Variable mit dem Doppeldollarzeichen ist ein Flag für bedingte Kompilierung.
Wenn ich das Paket beschreibe, sehen wir nur das öffentliche Paket:
SQL> desc my_pkg
FUNCTION PUBLIC_FUNCTION RETURNS DATE
SQL>
Jetzt setze ich das bedingte Flag und kompiliere das Paket neu, und wie von Zauberhand ...
SQL> alter session set plsql_ccflags='dev_env_test:true'
2 /
Session altered.
SQL> alter package my_pkg compile
2 /
Package altered.
SQL> desc my_pkg
PROCEDURE PRIVATE_PROC
FUNCTION PUBLIC_FUNCTION RETURNS DATE
SQL>
Das Privatisieren der Funktionen ist so einfach, wie Sie denken:
SQL> alter session set plsql_ccflags='dev_env_test:false'
2 /
Session altered.
SQL> alter package my_pkg compile
2 /
Package altered.
SQL> desc my_pkg
FUNCTION PUBLIC_FUNCTION RETURNS DATE
SQL>
Mit der bedingten Kompilierung können wir noch viel mehr machen. Es ist in den Dokumenten abgedeckt. Erfahren Sie mehr.