Sepertinya yang Anda inginkan adalah dapat membuat daftar semua paket yang berpotensi memiliki status.
Yang Anda cari hanyalah paket yang memiliki variabel atau konstanta global. Untuk satu paket, ini cukup sederhana dengan inspeksi. Namun, untuk melihat semua paket dalam skema, Anda dapat menggunakan PL/Scope:
Pertama, login sebagai pemilik skema, aktifkan PL/Scope di sesi Anda:
alter session set plscope_settings='IDENTIFIERS:ALL';
Kemudian, kompilasi ulang semua badan paket Anda.
Kemudian, jalankan kueri ini untuk menemukan semua variabel dan konstanta yang dideklarasikan pada level paket:
select object_name AS package,
type,
name AS variable_name
from user_identifiers
where object_type IN ('PACKAGE','PACKAGE BODY')
and usage = 'DECLARATION'
and type in ('VARIABLE','CONSTANT')
and usage_context_id in (
select usage_id
from user_identifiers
where type = 'PACKAGE'
);
Saya sarankan daftar paket yang dihasilkan akan menjadi target Anda.
Jika Anda menggunakan 11gR2, konstanta tidak lagi menyebabkan masalah ini, jadi Anda akan menggunakan kueri ini sebagai gantinya:
select object_name AS package,
type,
name AS variable_name
from user_identifiers
where object_type IN ('PACKAGE','PACKAGE BODY')
and usage = 'DECLARATION'
and type = 'VARIABLE'
and usage_context_id in (
select usage_id
from user_identifiers
where type = 'PACKAGE'
);