C'è un modo per farlo, a condizione che tu sia su 10g o superiore. Si chiama Compilazione condizionale. Questa è una funzionalità estremamente accurata che fornisce una sintassi speciale in modo da poter modificare il nostro codice PL/SQL in fase di compilazione.
A quanto pare ho utilizzato questa funzione proprio per esporre i pacchetti privati in una specifica in modo da poter eseguire test UTPLSQL su di essi.
Ecco la sintassi speciale:
create or replace package my_pkg
as
$IF $$dev_env_test $THEN
PROCEDURE private_proc;
$END
FUNCTION public_function return date;
end my_pkg;
/
Quella variabile con il segno del doppio dollaro è un flag di compilazione condizionale.
Se descrivo il pacchetto possiamo vedere solo il pacchetto pubblico:
SQL> desc my_pkg
FUNCTION PUBLIC_FUNCTION RETURNS DATE
SQL>
Adesso imposto il flag condizionale e ricompilo il pacchetto, e come per magia...
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>
Privatizzare le funzioni è semplice come pensi:
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>
Possiamo fare molto di più con la compilazione condizionale. È trattato nei documenti. Scopri di più.