2017-05-17 20 views

答えて

4

プライベート機能の性質は、それらがプライベートであることです。既定でそれらを公開するデータ辞書ビューはありません。 。USER_PROCEDURESとUSER_ARGUMENTSは

しかし、我々はPL/SCOPEを使用してそれらの情報を得ることができ、パッケージSPEC0で定義されたもの(パブリック手続きのための情報を表示するが、これは追加の努力の少しを必要とします。

  1. SQL> alter session set plscope_settings='IDENTIFIERS:ALL';
  2. SQL> alter package your_package compile body;

今、あなたは、このクエリを使用してプライベートなプログラム・ユニットを見つけることができます。

は、データ型のスカラー・データ型のエントリ(文字、数字を持っているので

select ui.name 
     , ui.type 
     , ui.usage_id 
     , ui2.type as param_datatype 
from user_identifiers ui 
    left join user_identifiers ui2 
     on ui2.usage_context_id = ui.usage_id 
where ui.object_name = 'YOUR_PACKAGE' 
and ui.usage = 'DECLARATION' 
and ui.usage_context_id = :private_proc_usage_id 
/

これは左結合する必要があります:民間手続きの引数は、このクエリに前のクエリからUSAGE_IDプラグ取得するには

select ui.type, ui.name, ui.usage_id 
from user_identifiers ui 
where ui.object_name = 'YOUR_PACKAGE' 
and ui.usage = 'DEFINITION' 
and ui.type in ('PROCEDURE', 'FUNCTION') 
minus 
(select 'PROCEDURE', upr.procedure_name 
    from user_procedures upr 
    where upr.object_name = 'YOUR_PACKAGE' 
    union 
    select 'FUNCTION', uarg.object_name 
    from user_arguments uarg 
    where uarg.package_name = 'YOUR_PACKAGE' 
    and uarg.position = 0 
); 

、日付、clob)、複雑なデータ型(xmltype、ユーザー定義型)ではありません。

USER_PROCEDURESまたはUSER_ARGUMENTSを照会するほど簡単ではないにしても、PL/SCOPEからプロシージャに関する多くの情報を得ることができます(実際は驚くほどclunkyです)。 Find out more。 PL/SCOPEデータはSYSAUX表領域に格納されているので、DBAにお湯を入れないでください。

関連する問題