Oversigt: I denne vejledning lærer du, hvordan du bruger SQL Server-markøren til at behandle et resultatsæt, en række ad gangen.
SQL fungerer baseret på sæt, fx SELECT
sætning returnerer et sæt rækker, der kaldes et resultatsæt. Men nogle gange vil du måske behandle et datasæt række for række. Det er her, markører spiller ind.
Hvad er en databasemarkør
En databasemarkør er et objekt, der muliggør gennemkørsel gennem rækkerne i et resultatsæt. Det giver dig mulighed for at behandle individuel række returneret af en forespørgsel.
SQL Server-markørens livscyklus
Dette er trin til brug af en markør:
Angiv først en markør.
Code language: SQL (Structured Query Language) (sql)
For at erklære en markør skal du angive dens navn efter DECLARE
nøgleordet med CURSOR
datatypen og angive en SELECT
udsagn, der definerer resultatsættet til markøren.
Derefter skal du åbne og udfylde markøren ved at udføre SELECT
udsagn:
Code language: SQL (Structured Query Language) (sql)
Hent derefter en række fra markøren til en eller flere variabler:
Code language: SQL (Structured Query Language) (sql)
SQL Server giver @@FETCHSTATUS
-funktionen, der returnerer status for den sidste markør FETCH
-sætning, der udføres mod markøren; Hvis @@FETCHSTATUS
returnerer 0, betyder det, at FETCH
-sætningen var vellykket. Du kan bruge udsagnet WHILE
til at hente alle rækker fra markøren som vist i følgende kode:
Code language: SQL (Structured Query Language) (sql)
Luk derefter markøren:
Code language: SQL (Structured Query Language) (sql)
Til sidst skal du placere markøren:
Code language: SQL (Structured Query Language) (sql)
SQL Server-markøreksempel
Vi bruger tabellen prodution.products
fra eksempeldatabasen til at vise dig, hvordan du bruger en markør:
Angiv først to variabler for at indeholde produktnavn og listepris, og en markør, der indeholder resultatet af en forespørgsel, der henter produktnavn og listepris fra production.products
-tabellen:
Åbn derefter markøren:
Code language: SQL (Structured Query Language) (sql)
Hent derefter hver række fra markøren og udskriv produktnavnet og listeprisen:
Luk derefter markøren:
Code language: SQL (Structured Query Language) (sql)
Til sidst skal du placere markøren for at frigive den.
Følgende kodestykker sætter alt sammen:
Her er deloutputtet:
I praksis bruger du sjældent markøren til at behandle et resultatsæt række for række.
I denne vejledning har du lært, hvordan du bruger SQL Server-markøren til at behandle et resultatsæt, hver række ad gangen.