Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

Apakah ada cara untuk menentukan apakah suatu paket memiliki status di Oracle?

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'
  );



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Memesan string sambil menggabungkan di oracle

  2. Menghubungkan ke Database Oracle menggunakan Layanan Integrasi Server Sql

  3. Tambahkan Hari ke Stempel Waktu

  4. ORA-03113:akhir file di saluran komunikasi

  5. Hapus karakter string pertama di Oracle Server