Introducere în cursoare în PL / SQL

PL / SQL este unul dintre cele mai utilizate limbaje de programare atunci când vine vorba de programarea bazelor de date. Unele concepte importante ale PL / SQL trebuie să învețe și să înțeleagă clar de către un programator PL / SQL pentru a le folosi corect. Cursorul este unul dintre ei. În programul PL / SQL, instrucțiunile SQL trebuie executate la final. Cursorul este ca un indicator care este utilizat pentru a indica zona de context, creat de Oracle pentru a executa instrucțiunea SQL. Un cursor reține toate rândurile returnate după procesarea instrucțiunilor SQL. Setul rândului deținut de Cursor este denumit Active Set. Cursorul poate fi, de asemenea, numit pentru a-l folosi mai departe în program de către un programator. În acest subiect, vom afla despre cursorii în PL / SQL.

Tipuri de cursoare

Există 2 tipuri de cursoare utilizate în programarea PL / SQL:

1. Cursoare implicite

După cum indică numele, cursoarele implicite sunt acele cursoare care sunt create automat de Oracle atunci când sunt executate orice instrucțiuni DML precum INSERT, DELETE, UPDATE. Când programatorul nu creează niciun cursor, Oracle îl creează pentru a reține rândurile afectate de instrucțiunile DML. Acest cursor nu poate fi numit de programator și, prin urmare, nu poate fi trimis și utilizat la un alt loc din cod. Deși Oracle oferă unele atribute pentru a efectua unele operațiuni ca acesta

% FOUND, % NOTFOUND, % ROWCOUNT, % ISOPEN.

S.No.AtributDescriere
1.%GĂSITEReturnează True dacă declarațiile DML precum INSERT,

Ștergere, actualizare afectează unul sau mai multe rânduri sau instrucțiunea SELECT returnează unul sau mai multe rânduri. În caz contrar, returnează False

2.%NU A FOST GASITEste opusul atributului% FOUND, se întoarce True dacă niciuna dintre rânduri nu este afectată de instrucțiunea DML sau instrucțiunea SELECT nu returnează niciun rezultat. În caz contrar, returnează False.
3.%ESTE DESCHISÎn cazul cursorilor implicite, întoarce întotdeauna False, deoarece Oracle închide cursorul imediat după executarea instrucțiunilor SQL.
4.% ROWCOUNTSe returnează numărul de rânduri. Adică numărul de rânduri care sunt afectate de DML-ul menționat
declarații ale programatorului în codul PL / SQL precum INSERT, DELETE și UPDATE sau numărul de rânduri returnate de instrucțiunea SELECT INTO.
Exemplu

Scenariu: Pentru a actualiza notele tuturor studenților dintr-un tabel „student” în limba engleză Subiectul având coloana „subiect” până la 10.

DECLARE
affected_rows number(4);
BEGIN
UPDATE students SET marks = marks+10 where subject = 'English';
IF​ sql%NOTFOUND THEN dbms_output.put_line ('No records of English subject are updated');
ELSIF sql%FOUND THEN​ affected rows: = affected rows%rowcount
dbms_output.put_line('Congrats ..Records Updated' || affected_rows);
END IF;
END;
/

2. Cursoare explicite

Cursoarele explicite sunt acele cursoare care sunt definite de programatori pentru a avea mai mult control asupra zonei de context (unde sunt stocate rezultatele interogărilor SQL). Acești cursori trebuie definiți mai întâi în blocul de declarații al programului PL / SQL. Este creat pentru instrucțiunile SQL care returnează mai mult de un rând după procesarea lor. Există o procedură specifică care trebuie urmată pentru utilizarea unui cursor explicit. Pașii pentru a utiliza cursorul Explicit sunt menționați mai jos:

1. Declarați cursorul: este utilizat pentru a da un nume zonei de context / cursorului împreună cu instrucțiunea selectă care trebuie executată.

Sintaxă

CURSOR cursor_name IS SELECT statement;

2. Deschideți cursorul: Deschidând un cursor, alocați-i memoria și puneți-o la dispoziție pentru a obține înregistrările returnate de instrucțiunea SQL.

Sintaxă

OPEN cursor_name;

3. Căutați cursorul: în acest proces, este accesat un rând la un moment dat. Instrucțiunea SELECT este executată și rândurile obținute sunt stocate în zona de context. Acesta preia înregistrările și le atribuie unei variabile definite.

Sintaxă

FETCH cursor_name INTO variable;

4. Închideți cursorul: Acest pas este utilizat pentru a închide cursorul deschis mai sus pentru a dezactiva memoria odată ce toate rândurile stocate sunt preluate cu succes.

Sintaxă

CLOSE cursor_name;

Exemplu

Scenariu: Recuperați numele, adresa și procentul general de elevi dintr-un tabel

„student” având coloane „nume”, „adresă” și „procent”

DECLARE
stud_name student.name%type; stud_address student.address%type;
stud_percentage student.percentage%type;
CURSOR stud IS SELECT name, address, percentage FROM student; BEGIN
Open stud;
LOOP
FETCH stud into stud_name, stud_address, stud_percentage;
EXIT when stud%NOTFOUND;
dbms_ouput.put_line(stud_name || ' ' || stud_address || ' ' || stud_percentage);
END LOOP;
CLOSE stud;
END
/

Acțiuni ale cursorului

Spre deosebire de SQL care funcționează pe toate rândurile într-un rezultat setat simultan, cursorul este utilizat în principal în scenarii atunci când programatorul dorește să proceseze și să recupereze datele unui rând la un moment dat.

Mai jos menționate sunt câteva dintre acțiunile cursorului:

  1. Declarați un cursor: este important să declarați un cursor înainte de a-l utiliza. Un cursor este declarat prin definirea instrucțiunii SQL care trebuie procesată.
  2. Deschideți un cursor: după declarare, un cursor este deschis și populat de returnarea datelor prin procesarea instrucțiunii SQL.
  3. Obțineți un cursor: după deschiderea cursorului, rândurile de ieșire trebuie să fie aduse una câte una pentru a efectua orice manipulare, dacă este necesar.
  4. Închideți un cursor: după toată manipularea datelor. Un cursor creat trebuie să fie închis
  5. Redimensionare: acest pas include ștergerea cursorului și eliberează toate resursele deținute de acesta.

Importanța cursorului în PL / SQL

Dirijarea către locația memoriei și efectuarea acțiunilor în consecință este una dintre sarcinile importante din orice limbaj de programare. În PL / SQL, este realizat de cursori. Cursorii joacă un rol crucial atunci când vine vorba de îndeplinirea sarcinii diferite, dând un nume zonei de memorie (zona de context) în care se salvează rezultatul interogărilor SQL. Putem accesa înregistrările una câte una și puteți efectua orice manipulări în cazul în care este necesar sau afișarea acesteia în consola în consecință. Cursoarele explicite sunt mai eficiente, oferă mai mult control programatic și mai puțin vulnerabile la erorile de date, astfel încât sunt foarte utile în programarea PL / SQL decât cele implicite.

Concluzie

Programarea bazelor de date este foarte populară în aceste zile, iar PL / SQL este una dintre limbile care ar trebui să fie foarte bine utilizate în ea. Cursorii oferă mai mult control programatorului pentru a accesa datele preluate. Pentru ca un programator să lucreze la PL / SQL, este important să cunoașteți utilizarea și importanța Cursorului pentru a lucra eficient.

Articole recomandate

Acesta este un ghid pentru cursoare în PL / SQL. Aici discutăm tipurile de cursoare utilizate în programarea PL / SQL cu acțiuni ale cursorului și importanța cursorului. De asemenea, puteți arunca o privire la următoarele articole pentru a afla mai multe -

  1. Tipuri de uniri în SQL
  2. Interogare SQL Insert
  3. Tabel în SQL
  4. Wildcard în SQL
  5. Top 6 tipuri de uniri în MySQL cu exemple