Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Como obter informações sobre todos os tipos de dados declarados em um determinado pacote


Usar PL/Escopo...
alter session set plscope_settings = 'IDENTIFIERS:ALL';

... e recompile o pacote (UTL_LOG No meu caso) ...
alter package utl_log compile;
alter package utl_log compile body;

... e, em seguida, consulte os user_identifiers Visão ...
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')
;

... o que (no meu caso) renderia ...
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

Observe que PL/Scope pode ser usado para qualquer identificador declarado/definido em qualquer unidade de programa, não apenas para declarações de tipo de dados.