sql >> Base de Datos >  >> RDS >> Oracle

¿Cómo compilar todos los paquetes no válidos en el esquema?

A continuación se muestra un ejemplo de programa PL/SQL para compilar todas las especificaciones de paquetes no válidos y todos los cuerpos de paquetes no válidos para el usuario actual (SCHEMA) en Oracle. Además, si alguno de los paquetes no válidos no se compila con éxito, imprimirá el nombre del paquete para la verificación manual de errores.

Compilar todos los paquetes no válidos en el ejemplo de 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;
/

Ejemplo de salida (si hay algún error):

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.

Ver también:

  • Cómo crear un procedimiento dentro de un paquete en Oracle
  • Cómo comprobar el recuento de objetos no válidos en Oracle
  • 20 ejemplos útiles de declaraciones de inserción de Oracle