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