sql >> データベース >  >> RDS >> Oracle

パッケージにOracleの状態があるかどうかを判断する方法はありますか?

    状態がある可能性のあるすべてのパッケージを一覧表示できるようにすることが必要なようです。

    探しているのは、グローバル変数または定数を持つパッケージだけです。単一のパッケージの場合、これは検査によって非常に簡単です。ただし、スキーマ内のすべてのパッケージを調べるには、PL / Scopeを使用できます:

    まず、スキーマの所有者としてログインし、セッションでPL/スコープをオンにします。

    alter session set plscope_settings='IDENTIFIERS:ALL';
    

    次に、すべてのパッケージ本体を再コンパイルします。

    次に、このクエリを実行して、パッケージレベルで宣言されているすべての変数と定数を見つけます。

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

    結果のパッケージのリストがターゲットになることをお勧めします。

    11gR2を使用している場合、定数によってこの問題が発生することはなくなったため、代わりに次のクエリを使用します。

    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. MySQLデータベースからデータを削除する

    2. SQLCONVERT日付関数を使用するさまざまな方法

    3. PostgreSQLのビルドシステムの作り方

    4. 複雑なSQLコマンドを実装する方法