Inleiding tot cursors in PL / SQL

PL / SQL is een van de meest gebruikte programmeertalen als het gaat om databaseprogrammering. Sommige belangrijke concepten van PL / SQL moeten duidelijk leren en begrijpen door een PL / SQL-programmeur om ze correct te gebruiken. De cursor is er een van. In het PL / SQL-programma moeten SQL-instructies aan het einde worden uitgevoerd. De cursor is net als een aanwijzer die wordt gebruikt om het contextgebied aan te wijzen, gemaakt door Oracle om de SQL-instructie uit te voeren. Een cursor bevat alle rijen die worden geretourneerd na het verwerken van SQL-instructies. De set van de rij die door Cursor wordt vastgehouden, wordt Actieve Set genoemd. De cursor kan ook worden benoemd om hem verder in het programma te gebruiken door een programmeur. In dit onderwerp gaan we meer te weten komen over Cursors in PL / SQL.

Typen cursors

Er zijn 2 soorten cursors die worden gebruikt bij PL / SQL-programmering:

1. Impliciete cursors

Zoals de naam aangeeft, zijn impliciete cursors die cursors die automatisch door Oracle worden gemaakt wanneer DML-instructies zoals INSERT, DELETE en UPDATE worden uitgevoerd. Wanneer de programmeur geen cursor maakt, maakt Oracle deze op zichzelf om de rijen vast te houden die worden beïnvloed door de DML-instructies. Deze cursors kunnen niet worden benoemd door de programmeur en kunnen daarom niet worden doorverwezen en op een andere plaats in de code worden gebruikt. Hoewel Oracle enkele attributen biedt om bepaalde bewerkingen erop uit te voeren, zoals

% GEVONDEN, % NIET-GEVONDEN, % ROWCOUNT, % ISOPEN.

S.No.AttribuutBeschrijving
1.% vondRetourneert True als DML-instructies zoals INSERT,

VERWIJDEREN, UPDATE beïnvloeden een of meer rijen of SELECT-instructie retourneert een of meer rijen. Anders wordt False geretourneerd

2.%NIET GEVONDENHet is het tegenovergestelde van het kenmerk% FOUND, het geeft True terug als geen van de rijen wordt beïnvloed door de DML-instructie of de SELECT-instructie geen resultaten retourneert. Anders wordt False geretourneerd.
3.%IS GEOPENDIn het geval van impliciete cursors wordt altijd False geretourneerd omdat Oracle de cursor sluit net na het uitvoeren van SQL-instructies.
4.%AANTAL RIJENHet geeft het aantal rijen terug. Dat wil zeggen de telling van het aantal rijen waarop de genoemde DML betrekking heeft
instructies van de programmeur in de PL / SQL-code zoals INSERT, DELETE en UPDATE of het aantal rijen dat wordt geretourneerd door de instructie SELECT INTO.
Voorbeeld

Scenario: de cijfers van alle studenten in een tabel 'student' bijwerken in het Engels Onderwerp met kolom 'onderwerp' tegen 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. Expliciete cursors

Expliciete cursors zijn die cursors die door programmeurs worden gedefinieerd om meer controle te hebben over het contextgebied (waar de resultaten van SQL-query's worden opgeslagen). Deze cursors moeten eerst worden gedefinieerd in het declaratieblok van het PL / SQL-programma. Het is gemaakt voor de SQL-instructies die na verwerking meer dan één rij retourneren. Er is een specifieke procedure die moet worden gevolgd voor het gebruik van een expliciete cursor. Stappen om Expliciete Cursor te gebruiken worden hieronder vermeld:

1. Declareer de cursor: het wordt gebruikt om een ​​naam te geven aan het contextgebied / de cursor samen met de select-opdracht die moet worden uitgevoerd.

Syntaxis

CURSOR cursor_name IS SELECT statement;

2. Open de cursor: Open een cursor, wijst het geheugen eraan toe en maak het beschikbaar om de records op te halen die door de SQL-instructie worden geretourneerd.

Syntaxis

OPEN cursor_name;

3. Haal de cursor op: in dit proces wordt één rij tegelijk geopend. De SELECT-instructie wordt uitgevoerd en de opgehaalde rijen worden opgeslagen in het contextgebied. Het haalt de records op en wijst ze toe aan een gedefinieerde variabele.

Syntaxis

FETCH cursor_name INTO variable;

4. Sluit de cursor: deze stap wordt gebruikt om de hierboven geopende cursor te sluiten om het geheugen te dealloceren zodra alle opgeslagen rijen met succes zijn opgehaald.

Syntaxis

CLOSE cursor_name;

Voorbeeld

Scenario: haal de naam, het adres en het totale percentage studenten op in een tabel

'student' met kolommen 'naam', 'adres' en 'percentage'

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
/

Cursoracties

In tegenstelling tot SQL, die op alle rijen in een resultaat werkt, wordt de cursor voornamelijk gebruikt in de scenario's waarin de programmeur de gegevens van één rij per keer wil verwerken en ophalen.

Hieronder staan ​​enkele Cursoracties:

  1. Cursor declareren : het is belangrijk om een ​​cursor te declareren voordat u deze gebruikt. Een cursor wordt gedeclareerd door de SQL-instructie te definiëren die moet worden verwerkt.
  2. Open een cursor: Na declaratie wordt een cursor geopend en gevuld met de gegevensretour door de verwerking van SQL-instructies.
  3. Een cursor ophalen : nadat de cursor is geopend, moeten de uitvoerrijen een voor een worden opgehaald om indien nodig manipulatie uit te voeren.
  4. Sluit een cursor: na alle gegevensmanipulatie. Een gemaakte cursor moet worden gesloten
  5. Deallocate: deze stap omvat het verwijderen van de cursor en maakt alle bronnen vrij die het bezit.

Het belang van cursor in PL / SQL

Het wijzen op de geheugenlocatie en het dienovereenkomstig uitvoeren van acties is een van de belangrijke taken in elke programmeertaal. In PL / SQL wordt dit gedaan door Cursors. Cursors spelen een cruciale rol bij het uitvoeren van de verschillende taak door een naam te geven aan het geheugengebied (contextgebied) waar het resultaat van SQL-query's wordt opgeslagen. We kunnen de records een voor een openen en indien nodig manipulaties uitvoeren of deze op de console weergeven. Expliciete cursors zijn efficiënter, geven meer programmatische controle en zijn minder kwetsbaar voor gegevensfouten, dus ze zijn erg handig in PL / SQL-programmering dan impliciete.

Conclusie

Databaseprogrammering is tegenwoordig erg populair en PL / SQL is een van de talen die er goed in moet worden gebruikt. Cursors geven de programmeur meer controle om toegang te krijgen tot de opgehaalde gegevens. Voor een programmeur om aan PL / SQL te werken, is het belangrijk om het gebruik en het belang van Cursor te kennen om effectief te werken.

Aanbevolen artikelen

Dit is een gids voor cursors in PL / SQL. Hier bespreken we de typen cursors die worden gebruikt in PL / SQL-programmering met cursoracties en het belang van de cursor. U kunt ook de volgende artikelen bekijken voor meer informatie -

  1. Typen joins in SQL
  2. Query invoegen
  3. Tabel in SQL
  4. Jokerteken in SQL
  5. Top 6 soorten joins in MySQL met voorbeelden