Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
              Van toepassing op:SQL Server
Azure SQL Database
Azure SQL Managed Instance
SQL-database in Microsoft Fabric Preview
Hiermee haalt u een specifieke rij op uit een Transact-SQL servercursor.
              
              
              Transact-SQL syntaxis-conventies
Syntax
FETCH   
          [ [ NEXT | PRIOR | FIRST | LAST   
                    | ABSOLUTE { n | @nvar }   
                    | RELATIVE { n | @nvar }   
               ]   
               FROM   
          ]   
{ { [ GLOBAL ] cursor_name } | @cursor_variable_name }   
[ INTO @variable_name [ ,...n ] ]   
Arguments
NEXT
Retourneert de resultaatrij direct na de huidige rij en wordt de huidige rij verhoogd naar de geretourneerde rij. Als FETCH NEXT de eerste keer wordt opgehaald op basis van een cursor, wordt de eerste rij in de resultatenset geretourneerd. 
              NEXT is de standaardoptie voor het ophalen van cursors.
PRIOR
Retourneert de resultaatrij direct voorafgaand aan de huidige rij en de huidige rij wordt afgetrokken van de geretourneerde rij. Als FETCH PRIOR de eerste keer wordt opgehaald voor een cursor, wordt er geen rij geretourneerd en wordt de cursor links geplaatst vóór de eerste rij.
FIRST
Retourneert de eerste rij in de cursor en maakt deze de huidige rij.
LAST
Retourneert de laatste rij in de cursor en maakt deze de huidige rij.
ABSOLUUT { n | @nvar}
Als n of @nvar positief is, retourneert u de rij n rijen van de voorzijde van de cursor en wordt de geretourneerde rij de nieuwe huidige rij. Als n of @nvar negatief is, retourneert u de rij n rijen vóór het einde van de cursor en wordt de geretourneerde rij de nieuwe huidige rij. Als n of @nvar 0 is, worden er geen rijen geretourneerd. 
              n moet een geheel getalconstante zijn en @nvar moet een kleineint, kleineint of int zijn.
RELATIVE { n | @nvar}
Als n of @nvar positief is, retourneert u de rij n rijen voorbij de huidige rij en wordt de geretourneerde rij de nieuwe huidige rij. Als n of @nvar negatief is, retourneert u de rij n rijen vóór de huidige rij en wordt de geretourneerde rij de nieuwe huidige rij. Als n of @nvar 0 is, wordt de huidige rij geretourneerd. Als FETCH RELATIVE is opgegeven met n of @nvar ingesteld op negatieve getallen of 0 bij het eerste ophalen uitgevoerd op een cursor, worden er geen rijen geretourneerd. 
              n moet een geheel getalconstante zijn en @nvar moet een kleineint, kleineint of int zijn.
GLOBAL
Hiermee geeft u op dat cursor_name verwijst naar een globale cursor.
              cursor_name
Is de naam van de geopende cursor waaruit het ophalen moet worden gemaakt. Als zowel een globale als een lokale cursor bestaat met cursor_name als hun naam, cursor_name naar de globale cursor als GLOBAL is opgegeven en op de lokale cursor als GLOBAL niet is opgegeven.
              @
              cursor_variable_name
Is de naam van een cursorvariabele die verwijst naar de geopende cursor waaruit het ophalen moet worden gemaakt.
INTO @variable_name[ ,... n]
Hiermee kunnen gegevens uit de kolommen van een ophalen in lokale variabelen worden geplaatst. Elke variabele in de lijst, van links naar rechts, is gekoppeld aan de bijbehorende kolom in de resultatenset van de cursor. Het gegevenstype van elke variabele moet overeenkomen of een ondersteunde impliciete conversie zijn van het gegevenstype van de bijbehorende kolom met resultatensets. Het aantal variabelen moet overeenkomen met het aantal kolommen in de cursorselectielijst.
Remarks
Als de SCROLL optie niet is opgegeven in een ISO-stijlinstructie DECLARE CURSOR , NEXT wordt de enige FETCH optie ondersteund. Als SCROLL deze is opgegeven in een ISO-stijl DECLARE CURSOR, worden alle FETCH opties ondersteund.
Wanneer de Transact-SQL DECLARE-cursorextensies worden gebruikt, zijn deze regels van toepassing:
Als een van beide
FORWARD_ONLYofFAST_FORWARDis opgegeven,NEXTwordt de enigeFETCHoptie ondersteund.Als
DYNAMIC,FORWARD_ONLYofFAST_FORWARDniet is opgegeven, en een vanKEYSET,STATICofSCROLLzijn opgegeven, worden alleFETCHopties ondersteund.DYNAMIC SCROLLcursors ondersteunen alleFETCHopties, behalveABSOLUTE.
De @@FETCH_STATUS functie rapporteert de status van de laatste FETCH instructie. Dezelfde informatie wordt vastgelegd in de kolom fetch_status in de cursor die door sp_describe_cursor wordt geretourneerd. Deze statusinformatie moet worden gebruikt om de geldigheid te bepalen van de gegevens die door een FETCH instructie worden geretourneerd voordat een bewerking op die gegevens wordt uitgevoerd. Zie @@FETCH_STATUS (Transact-SQL) voor meer informatie.
Permissions
Standaardmachtigingen voor FETCH elke geldige gebruiker.
Examples
A. FETCH gebruiken in een eenvoudige cursor
Het volgende voorbeeld declareert een eenvoudige cursor voor de rijen in de Person.Person tabel met een achternaam die begint met Ben gebruikt FETCH NEXT om de rijen te doorlopen. De FETCH instructies retourneren de waarde voor de kolom die is DECLARE CURSOR opgegeven als een resultatenset met één rij.
USE AdventureWorks2022;  
GO  
DECLARE contact_cursor CURSOR FOR  
SELECT LastName FROM Person.Person  
WHERE LastName LIKE 'B%'  
ORDER BY LastName;  
  
OPEN contact_cursor;  
  
-- Perform the first fetch.  
FETCH NEXT FROM contact_cursor;  
  
-- Check @@FETCH_STATUS to see if there are any more rows to fetch.  
WHILE @@FETCH_STATUS = 0  
BEGIN  
   -- This is executed as long as the previous fetch succeeds.  
   FETCH NEXT FROM contact_cursor;  
END  
  
CLOSE contact_cursor;  
DEALLOCATE contact_cursor;  
GO  
B. OPHALEN gebruiken om waarden op te slaan in variabelen
Het volgende voorbeeld is vergelijkbaar met voorbeeld A, behalve dat de uitvoer van de FETCH instructies wordt opgeslagen in lokale variabelen in plaats van rechtstreeks naar de client te worden geretourneerd. De PRINT instructie combineert de variabelen in één tekenreeks en retourneert deze naar de client.
USE AdventureWorks2022;  
GO  
-- Declare the variables to store the values returned by FETCH.  
DECLARE @LastName VARCHAR(50), @FirstName VARCHAR(50);  
  
DECLARE contact_cursor CURSOR FOR  
SELECT LastName, FirstName FROM Person.Person  
WHERE LastName LIKE 'B%'  
ORDER BY LastName, FirstName;  
  
OPEN contact_cursor;  
  
-- Perform the first fetch and store the values in variables.  
-- Note: The variables are in the same order as the columns  
-- in the SELECT statement.   
  
FETCH NEXT FROM contact_cursor  
INTO @LastName, @FirstName;  
  
-- Check @@FETCH_STATUS to see if there are any more rows to fetch.  
WHILE @@FETCH_STATUS = 0  
BEGIN  
  
   -- Concatenate and display the current values in the variables.  
   PRINT 'Contact Name: ' + @FirstName + ' ' +  @LastName  
  
   -- This is executed as long as the previous fetch succeeds.  
   FETCH NEXT FROM contact_cursor  
   INTO @LastName, @FirstName;  
END  
  
CLOSE contact_cursor;  
DEALLOCATE contact_cursor;  
GO  
C. Een SCROLL-cursor declareren en de andere FETCH-opties gebruiken
In het volgende voorbeeld wordt een SCROLL cursor gemaakt om volledige schuifmogelijkheden toe te staan via de LASTopties , PRIORen RELATIVEABSOLUTE de opties.
USE AdventureWorks2022;  
GO  
-- Execute the SELECT statement alone to show the   
-- full result set that is used by the cursor.  
SELECT LastName, FirstName FROM Person.Person  
ORDER BY LastName, FirstName;  
  
-- Declare the cursor.  
DECLARE contact_cursor SCROLL CURSOR FOR  
SELECT LastName, FirstName FROM Person.Person  
ORDER BY LastName, FirstName;  
  
OPEN contact_cursor;  
  
-- Fetch the last row in the cursor.  
FETCH LAST FROM contact_cursor;  
  
-- Fetch the row immediately prior to the current row in the cursor.  
FETCH PRIOR FROM contact_cursor;  
  
-- Fetch the second row in the cursor.  
FETCH ABSOLUTE 2 FROM contact_cursor;  
  
-- Fetch the row that is three rows after the current row.  
FETCH RELATIVE 3 FROM contact_cursor;  
  
-- Fetch the row that is two rows prior to the current row.  
FETCH RELATIVE -2 FROM contact_cursor;  
  
CLOSE contact_cursor;  
DEALLOCATE contact_cursor;  
GO  
See Also
              CLOSE (Transact-SQL)
              DEALLOCATE (Transact-SQL)
              CURSOR (Transact-SQL) declareren
              OPEN (Transact-SQL)