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

Jak získat informace o všech typech dat deklarovaných v daném balíčku

Použijte PL/Scope ...

alter session set plscope_settings = 'IDENTIFIERS:ALL';

... a znovu zkompilujte balíček (UTL_LOG v mém případě) ...

alter package utl_log compile;
alter package utl_log compile body;

... a poté dotaz na user_identifiers zobrazit ...

select name, type, object_name, object_type, line, col
from user_identifiers
where object_name = 'UTL_LOG'
    and usage = 'DECLARATION'
    and type not in ('VARIABLE','FUNCTION','FORMAL IN','FORMAL OUT','CONSTANT','PROCEDURE','FUNCTION','PACKAGE')
;

... což by (v mém případě) přineslo ...

NAME                TYPE    OBJECT_ OBJECT_ LINE COL
------------------- ------- ------- ------- ---- ---
ARR_SOME_COLLECTION VARRAY  UTL_LOG PACKAGE   19   6
REC_SOME_RECORD     RECORD  UTL_LOG PACKAGE   15   6
TYP_LOG_CODE        SUBTYPE UTL_LOG PACKAGE    8   9

Poznámka že PL/Scope lze použít pro jakýkoli identifikátor deklarovaný/definovaný v jakémkoli programovou jednotku, nejen pro deklarace datových typů.



  1. Jak zkontrolovat, zda existuje trigger v PostgreSQL?

  2. Cross Apply xml dotaz funguje exponenciálně horší, jak xml dokument roste

  3. Duplicitní záznamy v postgresql

  4. Sloupec objednávky podle určitých kritérií v mysql