sql >> Database >  >> RDS >> Oracle

Is er een manier om te bepalen of een pakket een status heeft in Oracle?

Het klinkt alsof u alle pakketten wilt kunnen weergeven die mogelijk een status hebben.

Wat u zoekt, zijn alleen pakketten met globale variabelen of constanten. Voor een enkel pakket is dit vrij eenvoudig door inspectie. Als u echter alle pakketten in een schema wilt bekijken, kunt u PL/Scope gebruiken:

Log eerst in als schema-eigenaar, schakel PL/Scope in uw sessie in:

alter session set plscope_settings='IDENTIFIERS:ALL';

Compileer vervolgens al uw pakketten opnieuw.

Voer vervolgens deze query uit om alle variabelen en constanten te vinden die op pakketniveau zijn gedeclareerd:

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

Ik stel voor dat de resulterende lijst met pakketten uw doel is.

Als je 11gR2 gebruikt, veroorzaken constanten dit probleem niet meer, dus gebruik je in plaats daarvan deze zoekopdracht:

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. SQL Server-geschiedenistabel - vullen via SP of Trigger?

  2. Begrip van opnieuw uitvoeren van loggroep versus bestand versus lid

  3. Hoe krijg je alle waarden in een kolom met PHP?

  4. Databasequery-efficiëntie maximaliseren voor MySQL - deel één