Oracle
 sql >> база данни >  >> RDS >> Oracle

Как да компилирам всички невалидни пакети в схема?

По-долу е даден пример за PL/SQL програма за компилиране на всички невалидни спецификации на пакета и всички невалидни тела на пакети за текущия потребител (SCHEMA) в Oracle. Освен това, ако някой от невалидните пакети не бъде компилиран успешно, той ще отпечата името на пакета за ръчна проверка за грешки.

Компилирайте всички невалидни пакети в пример за 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;
/

Примерен изход (ако има грешка):

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.

Вижте също:

  • Как да създадете процедура вътре в пакет в Oracle
  • Как да проверите броя на невалидни обекти в Oracle
  • 20 полезни примера за вмъкване на Oracle
  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. ORA-00984:колоната не е разрешена тук

  2. изчислете текущия баланс в заявка на Oracle

  3. Как можете да разберете дали се използва PL/SQL пакет, процедура или функция?

  4. AUTONOMOUS_TRANSACTION

  5. Настройка на Oracle за потребителска схема по подразбиране (без промяна на сесия)