sql >> Databáze >  >> RDS >> Oracle

Existuje nějaký způsob, jak zjistit, zda má balíček stav v Oracle?

Zní to, jako byste chtěli mít možnost vypsat všechny balíčky, které mohou mít potenciál.

To, co hledáte, jsou pouze balíčky, které mají nějaké globální proměnné nebo konstanty. U jednoho balení je to při kontrole docela jednoduché. Chcete-li se však podívat na všechny balíčky ve schématu, můžete použít PL/Scope:

Nejprve se přihlaste jako vlastník schématu a ve své relaci zapněte PL/Scope:

alter session set plscope_settings='IDENTIFIERS:ALL';

Poté znovu zkompilujte všechna těla balíčků.

Poté spusťte tento dotaz a vyhledejte všechny proměnné a konstanty deklarované na úrovni balíčku:

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

Navrhoval bych, aby výsledný seznam balíčků byl vaším cílem.

Pokud používáte 11gR2, konstanty již tento problém nezpůsobují, takže byste místo toho použili tento dotaz:

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. Zobrazit a vymazat mezipaměti/vyrovnávací paměti Postgres?

  2. Zaokrouhlení desetinných čísel dolů v SQL Server 2008

  3. Jak vytvořit databázi MySQL pomocí cPanel API

  4. Používejte relační databáze MySQL na Ubuntu 9.04 (Jaunty)