Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Czy istnieje sposób na ustalenie, czy pakiet ma stan w Oracle?

Wygląda na to, że chcesz wyświetlić listę wszystkich pakietów, które potencjalnie mogą mieć stan.

To, czego szukasz, to tylko pakiety, które mają dowolne zmienne globalne lub stałe. W przypadku pojedynczej paczki jest to dość proste po sprawdzeniu. Aby przejrzeć wszystkie pakiety w schemacie, możesz użyć PL/Scope:

Najpierw zaloguj się jako właściciel schematu, włącz PL/Scope w swojej sesji:

alter session set plscope_settings='IDENTIFIERS:ALL';

Następnie ponownie skompiluj wszystkie swoje pakiety.

Następnie uruchom to zapytanie, aby znaleźć wszystkie zmienne i stałe zadeklarowane na poziomie pakietu:

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

Sugeruję, że otrzymana lista pakietów będzie Twoim celem.

Jeśli korzystasz z 11gR2, stałe nie powodują już tego problemu, więc zamiast tego użyjesz tego zapytania:

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. Oświadczenie FORALL z klauzulą ​​INDICS-OF Bound w bazie danych Oracle

  2. SELECT z tabeli z listą Varying IN w klauzuli WHERE

  3. Funkcja Oracle Pipelined

  4. Pomóż mi wprowadzić terminologię Oracle do terminologii SQL Server

  5. Porównywanie dat w Oracle SQL