Oracle
 sql >> Database >  >> RDS >> Oracle

Come compilare tutti i pacchetti non validi nello schema?

Di seguito è riportato un esempio di programma PL/SQL per compilare tutte le specifiche di pacchetto non valide e tutti i corpi dei pacchetti non validi per l'utente corrente (SCHEMA) in Oracle. Inoltre, se uno qualsiasi dei pacchetti non validi non viene compilato correttamente, stamperà il nome del pacchetto per il controllo manuale degli errori.

Compila tutti i pacchetti non validi nell'esempio 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;
/

Esempio di output (se c'è un errore):

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.

Vedi anche:

  • Come creare una procedura all'interno di un pacchetto in Oracle
  • Come controllare il conteggio degli oggetti non validi in Oracle
  • 20 utili esempi di istruzioni di inserimento Oracle