以下は、すべての無効なパッケージ仕様をコンパイルするための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ステートメントの例