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

スキーマ内のすべての無効なパッケージをコンパイルする方法は?

    以下は、すべての無効なパッケージ仕様をコンパイルするためのPL/SQLプログラムの例です。 およびすべての無効なパッケージ本体 Oracleの現在のユーザー(SCHEMA)の場合。また、無効なパッケージのいずれかが正常にコンパイルされなかった場合は、手動のエラーチェックのためにパッケージ名が出力されます。

    Oracleの例ですべての無効なパッケージをコンパイルする

    SET SERVEROUTPUT ON;
    
    DECLARE
    CURSOR c_pkg
    IS
    SELECT owner, object_type, object_name
    FROM dba_objects
    WHERE status = 'INVALID'
    AND owner = USER
    AND object_type LIKE 'PACKAGE%'
    ORDER BY object_type;
    BEGIN
    FOR c IN c_pkg
    LOOP
    BEGIN
    IF c.object_type = 'PACKAGE'
    THEN
    EXECUTE IMMEDIATE 'ALTER PACKAGE ' || c.owner || '.' || c.object_name || ' COMPILE';
    ELSE
    EXECUTE IMMEDIATE 'ALTER PACKAGE '
    || c.owner || '.' || c.object_name
    || ' COMPILE BODY';
    END IF;
    EXCEPTION
    WHEN OTHERS
    THEN
    DBMS_OUTPUT.put_line(c.object_type || ' ' || c.object_name
    || ' is still invalid. Check the package manually to resolve.');
    END;
    END LOOP;
    END;
    /

    出力例(エラーがある場合):

    PACKAGE EMP_PKG is still invalid. Check the package manually to resolve.
    PACKAGE BODY EMP_PKG is still invalid. Check the package manually to resolve.
    PL/SQL procedure successfully completed.

    関連項目:

    • Oracleでパッケージ内にプロシージャを作成する方法
    • Oracleで無効なオブジェクトの数を確認する方法
    • 20の便利なOracleInsertステートメントの例
    1. 前月のすべての日付を一覧表示するoraclesqlクエリ

    2. JPA-EclipseLink-デフォルトスキーマを変更する方法

    3. Oracle PL/SQL-即時出力/コンソール印刷のヒント

    4. トランザクション内のエラーを無視するようにPostgresqlに依頼できますか