Ajutați dezvoltarea site -ului, împărtășind articolul cu prietenii!

Introducere în PL/SQL ridică excepția

PL/SQL oferă utilizatorului funcționalitatea de ridicare a excepției; de multe ori, pot apărea excepții în aplicația sau software-ul nostru, ceea ce înseamnă că există o problemă sau o eroare în codul nostru pentru a executa aplicația. Nu există control, dar atunci când se ridică o excepție, ne putem ocupa de toate erorile sau problemele din timpul execuției unei aplicații. Vedeți aici fiecare eroare sau problemă pe care nu o putem considera o excepție. Uneori are loc procesarea internă a bazei de date, sau uneori poate apărea cu diferite condiții de date.În acest caz, trebuie să oprim execuția aplicației noastre și să anunțăm utilizatorul final că poate fi ceva în neregulă.

Sintaxa PL/SQL ridică excepția

Mai jos este sintaxa menționată:

DECLARE
Declarație de decelerație variabilă;
ÎNCEPE
WHEN (numele excepției specificat) THEN
(cod pentru a gestiona excepția cu numele excepției specificat) WHEN OTHERS
ATUNCI
(cod pentru a gestiona toate tipurile de excepții) END;

Explicație:

  • În sintaxa de mai sus, folosim gestionarea excepțiilor pentru a gestiona toate tipurile de excepții. Aici am folosit mai întâi secțiunea declare, o parte opțională a acestei sintaxe. După aceea, folosim secțiunea de execuție, iar în interiorul secțiunii de execuție scriem condiția WHEN pentru a gestiona excepția. De exemplu, vedeți aici CÂND condiția urmează numele excepției specificate pe care o dorim.
  • În timpul execuției procedurii PL/SQL, poate apărea orice eroare de rulare atunci când este ridicată o excepție. În sintaxa de mai sus, excepția începe cu clauza WHEN și căutările acesteia într-o manieră secvențială. Când găsește excepția specificată, atunci execută codul respectiv al acelei excepții. Dacă nu este găsită o excepție, atunci motorul PL/SQL execută ceal altă parte a sintaxei, așa cum se arată.

Cum se ridică excepții în PL/SQL?

Data mai jos arată cum putem ridica excepția în PL/SQL, după cum urmează:

În principiu, există trei moduri de a ridica excepția, după cum urmează:

1. Excepție definită de utilizator

PL/SQL ne permite să definim propria noastră excepție conform cerințelor programului. În acest tip, trebuie doar să declarăm mai întâi o excepție; apoi, putem ridica excepția utilizând instrucțiunea de ridicare sau instrucțiunea de procedură.

Declarăm o excepție definită de utilizator utilizând următoarea sintaxă, după cum urmează.

DECLARE
Numele excepției specificat EXCEPTION;

Explicație:

  • Declarația de excepție este similară cu declarația variabilei, ceea ce înseamnă că trebuie să declarăm excepția în secțiunea de declarare a blocului PL/SQL.

2. Excepție definită intern

Această excepție este definită de sistem și executată intern la timpul de execuție, ceea ce înseamnă că poate apărea orice eroare de execuție, apoi se generează o excepție definită intern cu o instrucțiune specificată.

Sintaxă:

RAISE specificat exception_name;

Acum, să vedem câteva excepții predefinite în PL/SQL, după cum urmează:

  • ACCESS_INTO_NULL: Este ridicat atunci când obiectul cu valoare nulă atribuie automat valoarea.
  • CASE_NOT_FOUND: Este ridicată atunci când nu este selectată nicio opțiune din instrucțiunea CASE și nu există nicio clauză else.
  • INVALID _NUMBER: Când conversia unui șir de caractere într-un număr eșuează, deoarece șirul nu reprezintă un număr valid, această excepție este ridicată.

3. Excepție actuală

Cu instrucțiunea RAISE, puteți ridica din nou excepția actuală. Reatribuirea unei excepții blocului de anexare permite ca aceasta să fie tratată mai târziu. Prin urmare, nu trebuie să dați numele excepției atunci când o ridicați din nou.

Exemple de PL/SQL ridică excepție

Mai jos sunt menționate diferite exemple:

Exemplu 1

Să vedem primul exemplu de excepție definită de utilizator, după cum urmează.

Cod:

DECLARE
numărul X (4);
Y numărul (4);
numărul Z (4);
excepție one_divide;
ÎNCEPE
X:=&X;
Y:=&Y;
Dacă Y=1, atunci
ridicați excepția one_divide;
Se încheie dacă;
Z:=X/Y;
dbms_output.put_line(Z);
excepție
când excepția zero_divide atunci
dbms_output.put_line(‘excepție zero divide’);
când one_divide Excepție atunci
dbms_output.put_line(‘o excepție de diviziune’);
când altfel decât
dbms_output.put_line(sqlerrm);
END;
/

Explicație:

  • Folosind exemplul de mai sus, încercăm să implementăm excepția definită de utilizator. În acest exemplu, implementăm două excepții definite de utilizator, cum ar fi raise exception și raise_application_error. Aici, mai întâi, trebuie să declarăm excepția de ridicare pe care o declarăm excepția de creștere așa cum se arată. În acest exemplu, declarăm cele trei variabile în secțiunea declarație pentru a efectua operația matematică, cum ar fi împărțirea numerelor.După ce în interiorul secțiunii de execuție, luăm valoarea de la utilizator și efectuăm împărțirea. În acest exemplu, verificăm mai întâi valoarea lui Y; dacă valoarea Y este 1, atunci ridică excepția one_divide.
  • Acum controlul PL/SQL merge la secțiunea de excepții și efectuează operația de căutare când găsește excepția one_divide, apoi execută instrucțiunea respectivă așa cum se arată în programul de mai sus. În mod similar, când ridică excepția zero_divide, atunci tipărește mesajul de excepție zero_divide. Rezultatul final al procedurii de mai sus am ilustrat-o folosind următoarea captură de ecran, după cum urmează.

Ieșire:

Dacă inserăm o valoare lungă a lui Y, atunci va afișa mesajul de eroare, cum ar fi eroare numerică sau de valoare.

Exemplu 2

Acum, să vedem un alt exemplu, după cum urmează.

setează ieșirea serverului pe;

Cod:

DECLARE
x int;
y int;
z int;
ÎNCEPE
x :=&x;
y :=&y;
z :=x/y;
dbms_output.put_line('ieșirea declarației de mai sus=' || z);
EXCEPȚIE
când ZERO_DIVIDE atunci
dbms_output.put_line('Excepție împărțire cu 0');
END;
/

Explicație:

  • În exemplul de mai sus, folosim excepția de împărțire a implementării la zero. În acest exemplu, setăm mai întâi serveroutput; după aceea, în secțiunea de declarare, declarăm trei variabile diferite, x, y și z, cu tipul de date întreg, așa cum se arată în exemplul de mai sus. În următoarea parte a unui program din secțiunea de execuție, acceptăm valoarea de la utilizator pentru a efectua împărțirea lui x și y și stocarea rezultatelor în z; rezultatul stocat îl afișăm utilizând instrucțiunea de procedură dbms_output.put_line.
  • În secțiunea de excepții, scriem o excepție pentru zero_divide, ceea ce înseamnă că încercăm să efectuăm împărțirea utilizând 0 transferul de control PL/SQL în secțiunea de excepții și căutăm zero_divide. Dacă controlul află excepția zero_divide, atunci tipărește mesajul respectiv; în acest exemplu, afișăm împărțirea cu 0 excepții. Rezultatul final al procedurii de mai sus am ilustrat-o folosind următoarea captură de ecran, după cum urmează.

Ieșire:

Concluzie

Din articolul de mai sus, am văzut sintaxa de bază a excepției de ridicare și am văzut, de asemenea, diferite exemple ale excepției de ridicare. Din acest articol, am văzut cum și când folosim PL/SQL pentru a ridica excepții.

Ajutați dezvoltarea site -ului, împărtășind articolul cu prietenii!