Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Wie kompiliere ich alle ungültigen Pakete im Schema?

Unten ist ein Beispiel für ein PL/SQL-Programm zum Kompilieren aller ungültigen Paketspezifikationen und alle ungültigen Pakettexte für den aktuellen Benutzer (SCHEMA) in Oracle. Wenn eines der ungültigen Pakete nicht erfolgreich kompiliert wird, wird außerdem der Paketname zur manuellen Fehlerprüfung gedruckt.

Alle ungültigen Pakete im Oracle-Beispiel kompilieren

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;
/

Beispielausgabe (falls ein Fehler vorliegt):

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.

Siehe auch:

  • Wie man eine Prozedur innerhalb eines Pakets in Oracle erstellt
  • So überprüfen Sie die Anzahl ungültiger Objekte in Oracle
  • 20 nützliche Beispiele für Oracle Insert-Anweisungen