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

PL / SQLパッケージ、プロシージャ、または関数が使用されているかどうかをどのように判断できますか?

    USER / ALL_source:

    にクエリを実行することもできます。
    SELECT * FROM all_source
    where UPPER(TEXT) like UPPER('%procedure_name%')
    

    または

    SELECT * FROM all_source
    where UPPER(TEXT) like UPPER('%package.function_name%')
    

    自己参照を無視する必要がありますが、それは簡単に見つけることができます。

    また、user/all_viewsから「view」ソースを確認する必要があります。ただし、ビューソースのクエリに関する他の質問を参照してください。

    パッケージまたはトップレベルの機能/手順が一緒に使用されているかどうかを確認することもできます

    select * from all_dependencies
    where referenced_name like '%PACKAGE_NAME%';
    

    注意:必要に応じてuser_をall_/dba_に切り替えてください

    特に呼び出されていない関数を探している場合、別のオプションは、警告をオンにしてコードをコンパイルしてから、PLW-06002とLPW-06006を探すことです

    exec DBMS_WARNING.add_warning_setting_cat('ALL','ENABLE','SESSION')
    create or replace function x return number
    as
    procedure y is begin null; end;
    begin
    return 0;
    return 1;
    end;
    
    show errors
    
    Errors for FUNCTION X:
    
    LINE/COL ERROR
    -------- -----------------------------------------------------------------
    1/1      PLW-05018: unit X omitted optional AUTHID clause; default value DEFINER used
    3/1      PLW-06006: uncalled procedure "Y" is removed.
    6/1      PLW-06002: Unreachable code
    


    1. TIMESTAMPADD()の例– MySQL

    2. SQL Server:動的なwhere句

    3. 外部キーでリンクされたテーブルにデータを挿入する

    4. あるSQLServerインスタンスから別のSQLServerインスタンスにSQLServerジョブを移行する方法