Samenvatting: in deze tutorial leert u hoe u de SQL Server-cursor gebruikt om een resultaatset te verwerken, rij voor rij.
SQL werkt op basis van een set, bijv. SELECT
-instructie retourneert een set rijen die een resultaatset wordt genoemd. Soms wilt u echter een gegevensset rij voor rij verwerken. Dit is waar cursors in het spel komen.
Wat is een databasecursor
Een databasecursor is een object dat het doorlopen van de rijen van een resultatenset mogelijk maakt. Hiermee kunt u individuele rijen verwerken die door een query worden geretourneerd.
Levenscyclus van SQL Server-cursor
Dit zijn de stappen voor het gebruik van een cursor:
Declareer eerst een cursor.
Code language: SQL (Structured Query Language) (sql)
Om een cursor te declareren, specificeert u de naam na het DECLARE
trefwoord met het CURSOR
gegevenstype en geeft u een SELECT
instructie die de resultatenset voor de cursor definieert.
Open vervolgens en vul de cursor door de SELECT
statement:
Code language: SQL (Structured Query Language) (sql)
Haal vervolgens een rij van de cursor op in een of meer variabelen:
Code language: SQL (Structured Query Language) (sql)
SQL Server biedt de @@FETCHSTATUS
-functie die de status van de laatste cursor FETCH
-instructie retourneert die tegen de cursor wordt uitgevoerd; Als @@FETCHSTATUS
0 retourneert, wat betekent dat de FETCH
-instructie is geslaagd. U kunt de instructie WHILE
gebruiken om alle rijen van de cursor op te halen, zoals weergegeven in de volgende code:
Code language: SQL (Structured Query Language) (sql)
Sluit daarna de cursor:
Code language: SQL (Structured Query Language) (sql)
Verdeel ten slotte de locatie van de cursor:
Code language: SQL (Structured Query Language) (sql)
SQL Server-cursorvoorbeeld
We gebruiken de prodution.products
-tabel uit de voorbeelddatabase om u te laten zien hoe u een cursor gebruikt:
Declareer eerst twee variabelen voor de productnaam en de catalogusprijs, en een cursor om het resultaat vast te houden van een zoekopdracht die de productnaam en catalogusprijs ophaalt uit de production.products
tabel:
Open vervolgens de cursor:
Code language: SQL (Structured Query Language) (sql)
Haal vervolgens elke rij van de cursor op en druk de productnaam en catalogusprijs af:
Sluit daarna de cursor:
Code language: SQL (Structured Query Language) (sql)
Tenslotte, verwijder de locatie van de cursor om deze vrij te geven.
De volgende codefragmenten zetten alles bij elkaar:
Hier is de gedeeltelijke uitvoer:
In de praktijk zul je zelden de cursor gebruiken om een resultatenset rij voor rij te verwerken.
In deze zelfstudie heeft u geleerd hoe u de SQL Server-cursor gebruikt om een resultaatset te verwerken, elke rij tegelijk.