sql >> Database >  >> RDS >> Database

Wat is een cursor in SQL en hoe implementeer je deze?

Cursors in SQL vormen een integraal onderdeel van elke database die een gebruiker in feite helpt om zonder veel moeite door de database te bladeren. Via het medium van dit artikel over Cursor in SQL zal ik je alle noodzakelijke details geven die je nodig hebt voordat je ermee aan de slag gaat.

Hieronder staan ​​de onderwerpen die ik in dit artikel zal bespreken:

  • Wat is cursor in SQL?
  • Soorten SQL-cursors
  • Syntaxis van een SQL-cursor
  • Cursorlevenscyclus

Wat is cursor in SQL?

Cursor in SQL is een object dat het mogelijk maakt om de rijen van elke resultaatset te doorlopen. Hiermee kunt u een afzonderlijke rij van een database verwerken die door een query wordt geretourneerd. Het is een tijdelijk werkgebied of contextgebied dat in het geheugensysteem wordt aangemaakt tijdens de uitvoering van een SQL-instructie die de opgehaalde gegevens uit de database opslaat en helpt bij de manipulatie ervan. U kunt het beschouwen als een rangschikking van rijen samen met een aanwijzer die naar de huidige rij wijst. Een cursor is een databaseobject dat meer dan één rij kan bevatten, maar dat slechts één rij tegelijk kan verwerken. De reeks rijen die door een cursor wordt vastgehouden, staat bekend als een actieve set. U kunt dus het record van een tabel beheren in een singleton-techniek, d.w.z. één rij op elk moment in de tijd.

Nu u bekend bent met wat een cursor in SQL is, gaan we nu verder en bekijken we de verschillende typen ervan.

Soorten SQL-cursor

SQL biedt twee soorten cursors die ik hieronder heb opgesomd:

  1. Impliciete cursor

Telkens wanneer DML-bewerkingen zoals INSERT, UPDATE en DELETE in de database worden verwerkt, worden impliciete cursors automatisch gegenereerd en gebruikt door het framework. Dit type cursors wordt gebruikt voor interne verwerking en kan niet worden beheerd of verwezen vanuit een ander codegebied. Impliciete cursors in SQL houden alleen de betreffende rijen vast door de bewerking en kunnen alleen verwijzen naar de meest recente cursor met behulp van de cursorattributen die hieronder in de tabel worden weergegeven.

Kenmerk Beschrijving
%FOUND Het zal TRUE retourneren als een INSERT-, UPDATE- of DELETE-instructie een of meer rijen beïnvloedt of een SELECT INTO-instructie een of meer rijen retourneert. In andere gevallen wordt FALSE geretourneerd.
%NOTFOUND Het is technisch gezien het tegenovergestelde van het %FOUND-attribuut. Het retourneert TRUE in het geval dat een INSERT-, UPDATE- of DELETE-instructie geen invloed heeft op rijen of een SELECT INTO-instructie geen rijen retourneert. Anders geeft het gewoon ONWAAR terug.
%ISOPEN Dit kenmerk retourneert altijd FALSE voor impliciete cursors, aangezien de SQL-cursor automatisch wordt gesloten onmiddellijk nadat de bijbehorende SQL-instructie is uitgevoerd.
%ROWCOUNT Het retourneert het totale aantal betrokken rijen door een INSERT-, UPDATE- of DELETE-instructie, of de rijen die worden geretourneerd door een SELECT INTO-instructie.
  1. Expliciete cursor

Dit type cursor wordt gegenereerd wanneer gegevens door een gebruiker worden verwerkt via een SQL-blok. Over het algemeen activeert het gebruik van de SELECT-query de creatie van een expliciete cursor en kan deze meer dan één rij bevatten, maar slechts één tegelijk verwerken. Dit type cursor wordt gebruikt om de records in een kolom vast te houden. Hierdoor kunnen de programmeurs een benoemd contextgebied creëren voor het uitvoeren van hun DML-bewerkingen voor een betere controle. Het moet ook worden gedefinieerd in het SQL-blok en wordt op zijn beurt gemaakt voor een SELECT-query met behulp van die code.

Laten we nu eens kijken wat de syntaxis van een cursor in SQL is om een ​​beter begrip van een cursor te krijgen.

Syntaxis van een SQL-cursor

Hieronder staat de algemene syntaxis voor het maken van een expliciete cursor.

CURSOR cursorName IS selectStatement;

Hier:

cursorName – Dit vertegenwoordigt een geldige naam voor de cursor

selectStatement - Dit vertegenwoordigt een selectiequery die meerdere rijen retourneert

Laten we nu verder gaan met dit artikel en de levenscyclus van een SQL-cursor bekijken.

Cursorlevenscyclus

Er zijn in principe 5 stadia in de levenscyclus van een cursor in SQL die ik hieronder heb opgesomd:

  1. Verklaren
DECLARE cursorName CURSOR
FOR selectStatement;

Deze stap helpt je bij het specificeren van de naam en het gegevenstype van de cursor en de SELECT-instructie zal de resultatenset definiëren.

  1. Open
OPEN cursorName;

Met deze stap kun je de cursor openen en vullen door deze uit te voeren.

  1. Ophalen
FETCH NEXT FROM cursor INTO variableList;

Met deze stap wordt een rij van de cursor opgehaald en in een of meer variabelen opgeslagen.

[Optioneel] CheckStatus

WHILE @@FETCH_STATUS = 0
BEGIN
FETCH NEXT FROM cursorName;
END;

Deze functie retourneert de status van de laatste FETCH-instructie die tegen de cursor is uitgevoerd. Als deze functie 0 retourneert, betekent dit dat de FETCH-bewerking is geslaagd. Om alle rijen van de cursor te halen, wordt de WHILE-component gebruikt.

  1. Sluiten
CLOSE cursorName;

Deze stap helpt je bij het sluiten van de cursor nadat de bewerkingen zijn voltooid.

  1. Toewijzen opheffen
DEALLOCATE cursor_name;

Deze stap helpt bij het ongedaan maken van de toewijzing van de cursor en het vrijmaken van geheugenruimte.

Hiermee wil ik dit artikel over Cursor in SQL besluiten. Ik hoop dat dit artikel je heeft geholpen bij het toevoegen van waarde aan je kennis. Voor meer informatie over SQL of Databases, kunt u hier onze uitgebreide leeslijst raadplegen:Databases Edureka .

SQL-basisprincipes voor beginners | Leer SQL | SQL-zelfstudie voor beginners | Edureka

Deze Edureka-video over 'SQL Basics for Beginners' helpt je de basisprincipes van SQL te begrijpen en ook SQL-query's die erg populair en essentieel zijn.

Als je een gestructureerde training over MySQL wilt krijgen, bekijk dan onze MySQL DBA-certificeringstraining die wordt geleverd met een door een instructeur geleide live training en real-life projectervaring. Deze training zal u helpen MySQL diepgaand te begrijpen en u te helpen het onderwerp onder de knie te krijgen.

Heeft u een vraag voor ons? Vermeld het in het opmerkingengedeelte van ”Cursor in SQL ” en ik zal contact met je opnemen.


  1. Hoe verbinding maken met MySQL op Amazon EC2 vanuit Linux / Mac?

  2. Django-databaselaag gebruiken buiten Django?

  3. Tekst zoeken en vervangen in mysql-tabel

  4. MySQL cast/converteert automatisch een string naar een nummer?