Cum de a prinde erori în oracle (plsql) excepție, sqlerrm, sqlcode

Un ghid mic pentru a prinde bug-uri în Oracle PLSQL.
Descrierea modului de utilizare a funcțiilor SQLERRM și SQLCODE în Oracle (PLSQL) pentru a prinde erorile EXCEPTION. cu o descriere a sintaxei și un exemplu.

Funcția SQLERRM returnează un mesaj de eroare asociat cu ultima excepție care a apărut (eroare).
Funcția SQLERRM - nu are parametri.

Funcția SQLCODE returnează un cod de eroare asociat cu ultima excepție care a apărut (eroare)
Funcția SQLERRM - nu are parametri.

În mod obișnuit, EXCEPTION handlingul excepțiilor arată astfel:

Puteți utiliza funcțiile SQLERRM și SQLCODE pentru a apela un mesaj de eroare, cum ar fi:


Sau puteți salva mesajul de eroare în tabel în felul următor:


Variante ale principalelor erori posibile:

DUP_VAL_ON_INDEX
ORA-00001
Când încercați să inserați INSERT sau să schimbați datele UPDATE care creează o intrare duplicat care încalcă un index unic.

TIMEOUT_ON_RESOURCE
ORA-00051
Apare atunci când resursa peste care se efectuează operația este blocată și sa produs un expirat.

TRANSACTION_BACKED_OUT
ORA-00061
A avut loc o răsturnare parțială a tranzacției.

INVALID_CURSOR
ORA-01001
Încercați să utilizați cursorul care nu există. Se poate întâmpla dacă încercați să utilizați cursorul FETCH sau închideți cursorul CLOSE înainte de a deschide acest cursor.

NOT_LOGGED_ON
ORA-01012
O încercare de a lua măsuri fără conectare.

LOGIN_DENIED
ORA-01017
Tentativă nereușită de conectare, acces refuzat, nu un utilizator valid sau o parolă.

NO_DATA_FOUND
ORA-01403
Ceva din următoarele: O încercare de a insera un SELECT INTO dintr-un set de valori inexistente (selectați - nu întoarce nimic). A fost făcută o încercare de a accesa un rând / înregistrare neinitializate în tabel. Sa încercat citirea înregistrării după sfârșitul fișierului utilizând pachetul UTL_FILE.

TOO_MANY_ROWS
ORA-01422
Încercarea de a insera o valoare într-o variabilă folosind SELECT INTO și selectați returnate mai mult de o valoare.

INVALID_NUMBER
ORA-01722
O încercare de a executa o interogare SQL care convertește un șir (STRING) la un număr (NUMBER) cu o astfel de conversie este imposibilă.

STORAGE_ERROR
ORA-06500
Fie lipsa memoriei, fie o eroare de memorie.

PROGRAM_ERROR
ORA-06501
Se recomandă o eroare de program internă cu o astfel de eroare de contactare a serviciului de asistență Oracle.

VALUE_ERROR
ORA-06502
Sa încercat efectuarea unei operațiuni de conversie a datelor care sa încheiat cu o eroare (de exemplu: rotunjire, conversie de tip etc.).

CURSOR_ALREADY_OPEN
ORA-06511
Încercați să deschideți un cursor deja deschis.

Probabil că totul.