Ada cara untuk melakukan ini, asalkan Anda menggunakan 10g atau lebih tinggi. Ini disebut Kompilasi Bersyarat. Ini adalah fitur yang sangat rapi yang menyediakan sintaks khusus sehingga kami dapat mengubah kode PL/SQL kami pada waktu kompilasi.
Kebetulan saya telah menggunakan fitur ini secara tepat untuk mengekspos paket pribadi dalam spesifikasi sehingga saya dapat menjalankan tes UTPLSQL terhadapnya.
Berikut adalah sintaks khusus:
create or replace package my_pkg
as
$IF $$dev_env_test $THEN
PROCEDURE private_proc;
$END
FUNCTION public_function return date;
end my_pkg;
/
Variabel dengan tanda dolar ganda itu adalah bendera Kompilasi Bersyarat.
Jika saya menjelaskan paket kami hanya dapat melihat paket publik:
SQL> desc my_pkg
FUNCTION PUBLIC_FUNCTION RETURNS DATE
SQL>
Sekarang saya mengatur flag kondisional dan mengkompilasi ulang paket, dan seolah-olah ajaib ...
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>
Memprivatisasi fungsi semudah yang Anda pikirkan:
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>
Kita dapat melakukan lebih banyak lagi dengan kompilasi bersyarat. Itu tercakup dalam dokumen. Cari tahu lebih lanjut.