Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Rejestruj komunikaty o błędach w procedurze składowanej Oracle

Jeśli zdecydujesz się na własne logowanie i zalogowanie się do tabeli, możesz przejść do Transakcja autonomiczna trasa.

Transakcja autonomiczna to transakcja, która może zostać zatwierdzona niezależnie od bieżącej transakcji, w której się znajdujesz.

W ten sposób można rejestrować i zatwierdzać wszystkie potrzebne informacje w tabeli dziennika niezależnie od powodzenia lub niepowodzenia procedury składowanej lub transakcji nadrzędnej procesu wsadowego.

CREATE OR REPLACE PROCEDURE "SP_LOG" (
    P_MESSAGE_TEXT VARCHAR2
) IS
  pragma autonomous_transaction;
BEGIN

    DBMS_OUTPUT.PUT_LINE(P_MESSAGE_TEXT);

    INSERT INTO PROCESSING_LOG (
        MESSAGE_DATE,
        MESSAGE_TEXT
    ) VALUES (
        SYSDATE,
        P_MESSAGE_TEXT
    );
    COMMIT;

END;
/

Następnie, jeśli nazwiesz to w ten sposób, nadal możesz otrzymywać wiadomości zapisane w tabeli dziennika, nawet jeśli wystąpi niepowodzenie i cofniesz transakcję:

BEGIN
  SP_LOG('Starting task 1 of 2');

  ... code for task 1 ...

  SP_LOG('Starting task 2 of 2');

  ... code for task 2 ...

  SP_LOG('Ending Tasks');

  ... determine success or failure of process and commit or rollback ... 

 ROLLBACK;
END;
/

Możesz chcieć to uporządkować z wyjątkami, które mają sens dla twojego kodu, ale to jest ogólna idea, dane zapisane w wywołaniach SP_LOG pozostają, ale transakcję nadrzędną nadal można wycofać.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Testowanie jednostkowe instrukcji DDL, które muszą znajdować się w transakcji

  2. FNDCPASS &AFPASSWD

  3. Oracle SQLPlus ORA-01017 nieprawidłowe poświadczenia podczas określania schematu

  4. Określanie lokalizacji odpowiedniego pliku tnsnames.ora

  5. Końcowe zero