Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Como compilar todos os pacotes inválidos no esquema?


Abaixo está um exemplo de programa PL/SQL para compilar todas as especificações de pacotes inválidos e todos os corpos de pacote inválidos para o usuário atual (SCHEMA) no Oracle. Além disso, se algum dos pacotes inválidos não for compilado com sucesso, ele imprimirá o nome do pacote para verificação manual de erros.

Compile todos os pacotes inválidos no exemplo 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;
/

Exemplo de saída (se houver erro):

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.

Veja também:

  • Como criar um procedimento dentro de um pacote no Oracle
  • Como verificar a contagem de objetos inválidos no Oracle
  • 20 exemplos úteis de instruções de inserção do Oracle