Introducere în declarația de caz în PL / SQL

Instrucțiunea CASE în PL / SQL este similară cu condiția IF-ELSEIF în care sunt listate diferite condiții într-un bloc și numai acele instrucțiuni sunt executate pentru care îndeplinește condiția. Instrucțiunea CASE se potrivește cu valoarea expresiei în loc cu expresia booleană. Expresia ar putea fi de orice tip de date și același tip de date trebuie utilizat în instrucțiuni. Fiecare instrucțiune are o valoare predefinită și dacă acea valoare se potrivește cu valorile transmise în expresia selectorului, respectiva instrucțiune este executată. În acest subiect, vom afla despre instrucțiunea CASE în PL / SQL.

Sintaxă

Acum, că ați obținut o listă despre ce este o declarație CASE în PL / SQL este să aruncăm o privire la sintaxa instrucțiunii CASE.

CASE (expression)
WHEN THEN statement_l;
WHEN THEN statement_2;
WHEN THEN statement_3;
ELSE default_statement;
END CASE;

Explicarea codului

În sintaxa de mai sus, expresia va returna o valoare de orice tip de date, toate instrucțiunile vor avea o valoare unică predefinită, expresia CASE va parcurge toate instrucțiunile până când va obține o potrivire exactă definită în expresia valorică, în acest caz, Value_1, Value_2 și Value_3. Dacă expresia Caz nu a găsit potrivirea în instrucțiune, instrucțiunea implicită va fi executată.

Rețineți că blocul ELSE este opțional și dacă nu doriți să se execute vreo instrucțiune implicită, puteți săriți această declarație. Cazul FIN este o parte obligatorie a cazului.

Diagrama fluxului

Cum funcționează declarația de caz în PL / SQL?

Deși instrucțiunea CASE introdusă în Oracle 9i a fost utilizată pe scară largă în celelalte limbaje de programare. Ca și alte limbaje de programare, instrucțiunea CASE funcționează într-un mod similar.

Oracle 9i acceptă două tipuri de declarații CASE instrucțiune CASE simplă și instrucțiune CASE căutată

1. Declarație simplă de caz

În instrucțiunea de caz simplă, o instrucțiune se execută dacă valoarea expresiei se potrivește cu condiția declarată. Aceste condiții de declarație sunt predefinite în timp ce se scrie instrucțiunea CASE. Odată ce compilatorul găsește o potrivire, acesta se rupe și iese din buclă după executarea instrucțiunii evitând evaluarea expresiei inutile. Dacă compilatorul nu a găsit nicio potrivire, va executa instrucțiunea cazului implicit. Cazul implicit nu este obligatoriu și poate fi omis.

Sintaxă

CASE expression
WHEN condition_1 THEN
statements1
WHEN condition_2 THEN
statements2

ELSE
statements_else
END CASE;

Explicaţie

Așa cum am menționat anterior, cazul ELSE este opțional. Compilatorul evaluează mai întâi expresia CASE, apoi compară expresia cu prima condiție. Dacă condiția se potrivește cu declarația de expresie 1 se va executa altfel condiția 2 este verificată și așa mai departe.

Să vedem câteva exemple în timp real pentru a înțelege mai clar conceptul

SELECT Employee_Name,
CASE rating
WHEN 1 THEN 'Low'
WHEN 3 THEN 'High'
ELSE 'Medium' END
FROM Review;

Să presupunem că există un tabel de revizuire care conține detalii despre feedback la sfârșitul anului și trebuie să arătați numele angajatului și evaluările. Dar, în loc de numerele pe care doriți să le afișați Scăzutul ratingului este 1, Valoarea maximă este 3 altfel medie.

Interogarea scrisă mai sus va produce rezultatele de mai jos

Numele angajaților CASECR

-----------

Bogart Low

Nolte Medium

Loren Mediu

Gueney High

2. Declarație de caz căutată

Instrucțiunea CASE căutată este ușor diferită de instrucțiunea CASE simplă. În declarația de caz căutată în loc de o condiție predefinită, puteți scrie o condiție care va fi evaluată la timpul de execuție.

să aruncăm o privire la sintaxa instrucțiunii CASE Căutate cu acest exemplu

CASE
WHEN salary >= 10000 AND salary <=20000 THEN
AllocateBonus(employee_id, 1500);
WHEN salary > 20000 AND salary <= 40000 THEN
AllocateBonus(employee_id, 1000);
WHEN salary > 40000 THEN
AllocateBonus(employee_id, 500);
WHEN salary > 60000 THEN
AllocateBonus(employee_id, 250);
ELSE
AllocateBonus(employee_id, 0);
END CASE;

Presupunem că cerința este să alocăm bonusuri unui angajat în funcție de gama de salarii curente. Dacă un angajat se încadrează în anumite criterii, ar trebui să fie apelată funcția AllocateBonus, care are ca parametri angajați_id și bonus de sumă.

În exemplul de mai sus, am definit diferite game de salarii și pe baza funcției AllocateBonus va fi apelat dacă salariul se încadrează în intervalul specificat.

Notă : În fiecare iterație, o singură instrucțiune va fi executată chiar dacă mai multe instrucțiuni îndeplinesc criteriile. Când clauzele sunt întotdeauna evaluate în ordine de sus în jos.

sfaturi

Deoarece clauza WHEN este evaluată într-o anumită ordine, adică de sus în jos, ar fi recomandat să listăm clauzele care sunt cel mai probabil să apară prima sau frecvența este mai mare. În afară de cea a oricărei clauze WHEN, este o expresie scumpă, care necesită multă memorie CPU, ar trebui să fie prezentă la sfârșit pentru a minimiza șansele de a fi executat.

3. Declarație CASE cuibărită

Ca și instrucțiunea IF-ELSE cuibărită, instrucțiunea CASE poate fi, de asemenea, cuibărită. Sintaxa rămâne aceeași doar că atunci când condiția exterioară îndeplinește criteriile trece din nou printr-o serie de enunțuri. Să improvizăm exemplul CASE căutat mai sus pentru a înțelege cum funcționează instrucțiunea CASE cuibărită.

CASE
WHEN salary >= 10000 THEN
CASE
WHEN salary <= 20000 THEN
AllocateBonus(employee_id, 1500);
WHEN salary > 20000 THEN
AllocateBonus(employee_id, 1000);
END CASE;
WHEN salary > 40000 THEN
AllocateBonus(employee_id, 500);
WHEN salary < 10000 THEN
give_bonus(employee_id, 0);
END CASE;

Explicaţie

După cum vedeți, sintaxa rămâne aceeași doar că atunci când condiția o satisface, treceți din nou printr-o instrucțiune CASE pentru a executa în sfârșit funcția Alocare.

Concluzie - declarație CASE în PL / SQL

Acum că am ajuns la finalul articolului, să rezumăm punctele cheie despre care am discutat în acest articol. Am văzut ce este o declarație CASE în PL / SQL, am învățat sintaxa de bază cu un exemplu. Am discutat diferitele tipuri de instrucțiuni CASE, adică CASE simple, CASE Căutate și instrucțiunea CASE cuibărit cu un exemplu. De asemenea, am aflat cum putem optimiza declarația CASE prin ordonarea corectă a clauzei WHEN.

Articole recomandate

Acesta este un ghid pentru declarația CASE în PL / SQL. Aici vom discuta despre cum funcționează declarația de caz în PL / SQL cu exemple și sintaxă. De asemenea, puteți arunca o privire la următoarele articole pentru a afla mai multe -

  1. Ce este PL / SQL?
  2. Comenzi PL / SQL
  3. Utilizări SQL
  4. Cariere în PL / SQL
  5. Declarație IF-Else în Matlab
  6. Bucle în PL / SQL