Udostępnij za pośrednictwem


Pobieranie (Transact-SQL)

Pobiera określonego wiersza z Transact-SQL serwera kursor.

Ikona łącza do tematuJęzyka Transact-SQL składni konwencje

Składnia

FETCH 
          [ [ NEXT | PRIOR | FIRST | LAST 
                    | ABSOLUTE { n | @nvar } 
                    | RELATIVE { n | @nvar } 
               ] 
               FROM 
          ] 
{ { [ GLOBAL ] cursor_name } | @cursor_variable_name } 
[ INTO @variable_name [ ,...n ] ] 

Argumenty

  • DALEJ
    Zwraca niezwłocznie po bieżącym wierszu i skoki bieżącego wiersza do wiersza zwracana wiersz wyników.W przypadku pobrania NASTĘPNEJ pierwszego pobrania przed kursor, zwraca pierwszy wiersz w zestaw wyników.NASTĘPNIE jest domyślna opcja pobrania kursor .

  • PRZED
    Zwraca bezpośrednio poprzedzającego bieżący wiersz i zmniejsza bieżącego wiersza do wiersza zwracana wiersz wyników.W przypadku uprzedniego pobrania pierwszego pobrania przed kursor, zwracane bez wiersza i pozostawia się kursor umieszczony przed pierwszym wierszem.

  • PIERWSZY
    Zwraca pierwszy wiersz kursor i czyni go bieżącego wiersza.

  • OSTATNI
    Zwraca ostatni wiersz kursor i czyni go bieżącego wiersza.

  • ABSOLUTE { n| @nvar}
    Jeśli n lub @nvar jest dodatnia, zwraca wiersz n wierszy z przodu kursor i sprawia, że zwracanych wierszy nowego bieżącego wiersza.Jeśli n lub @nvar jest ujemna, funkcja zwraca wiersz n wierszy przed końcem kursor i sprawia, że zwracanych wierszy nowego bieżącego wiersza.Jeśli n lub @nvar jest równa 0, nie są zwracane żadne wiersze.n musi być liczbą całkowitą stała i @nvar musi być smallint, tinyint, lub int.

  • RELATIVE { n| @nvar}
    Jeśli n lub @nvar jest dodatnia, zwraca wiersz n wierszy poza bieżący wiersz i sprawia, że zwracane wiersza nowych bieżącego wiersza.Jeśli n lub @nvar jest ujemna, funkcja zwraca wiersz n wiersze przed bieżącym wierszem i sprawia, że zwracane wiersza nowy bieżącego wiersza.Jeśli n lub @nvar jest równy 0, funkcja zwraca bieżący wiersz.Jeśli pobranie WZGLĘDNE jest określany za pomocą n lub @nvar zestaw liczb ujemnych lub 0 na pierwsze pobranie Sporządzono przeciwko kursor, są zwracane żadne wiersze.n musi być liczbą całkowitą stała i @nvar musi być smallint, tinyint, lub int.

  • GLOBALNE
    Określa, żecursor_name odnosi się do globalnego kursor.

  • cursor_name
    Jest nazwą otwarte z którego należy dokonać pobrania kursor .Jeśli globalnym i lokalnym kursor istnieje z cursor_name jako swojej nazwy cursor_name globalnego kursor , jeśli określony szablon GLOBALNY oraz lokalny kursor , jeżeli nie określono GLOBALNEGO.

  • @cursor_variable_name
    Odwołuje się nazwa zmiennej kursor do otwartych z którego należy dokonać pobrania kursor .

  • INTO @variable_name,...n
    Zezwala na danych z kolumn pobranie umieszczanych w zmiennych lokalnych.Każda zmienna na liście od lewej do prawej, jest skojarzony z odpowiedniej kolumna w kursor zestaw wyników.Typ danych każdej zmiennej musi odpowiadać lub być obsługiwane niejawna konwersja typu danych odpowiednich zestaw wyników kolumna.Liczba zmiennych musi odpowiadać liczba kolumn na liście wybierz kursor .

Uwagi

DALEJ jest obsługiwana tylko opcja pobrania w stylu ISO DECLARE CURSOR instrukcjanie określono opcję PRZEWIJANIA.Jeżeli PRZEWIJANIA określono w ISO styl DECLARE CURSOR, obsługiwane są wszystkie opcje pobierania.

Gdy Transact-SQL używane są rozszerzenia kursor DECLARE, reguły te stosuje się:

  • NASTĘPNIE jest obsługiwana tylko opcja pobrania określonych FORWARD_ONLY lub FAST_FORWARD.

  • Jeśli DYNAMICZNY, FORWARD_ONLY lub FAST_FORWARD nie są określone i określić jeden zestaw KLUCZY, STATYCZNE lub PRZEWIJANIA, obsługiwane są wszystkie opcje pobierania.

  • Kursory PRZEWIJANIA dynamiczne obsługują wszystkie opcje pobierania z wyjątkiem BEZWZGLĘDNĄ.

@@ FETCH_STATUS funkcja raportuje stan ostatniego pobrania instrukcja.Te same informacje są zapisywane w fetch_status kolumna kursor zwrócony przez sp_describe_cursor.Informacje o stanie należy używany do sprawdzania poprawności danych zwróconych przez pobieranie instrukcja przed próbą wszelkie działania przeciwko danych.Aby uzyskać więcej informacji, zobacz FETCH_STATUS @@ (Transact-SQL).

Uprawnienia

FETCH domyślne uprawnienia do prawidłowego użytkownika.

Przykłady

A.Za pomocą pobrania w prostych kursor

Poniższy przykład deklaruje proste kursor dla wierszy w Person.Person tabela o nazwie ostatniego, który zaczyna się od Bi korzysta z FETCH NEXT do kolejnych wierszy.FETCH Instrukcji zwracają wartość dla kolumna określone w DECLARE CURSOR jako pojedynczego wiersza, zestaw wyników.

USE AdventureWorks2008R2;
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.Za pomocą pobrania do przechowywania wartości zmiennych

Poniższy przykład jest podobne do A, z wyjątkiem danych wyjściowych z FETCH sprawozdania są przechowywane w zmiennych lokalnych zamiast zwracanych bezpośrednio do klient.PRINTinstrukcja scala zmiennych w jeden ciąg i zwraca je do klient.

USE AdventureWorks2008R2;
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.Deklarowanie PRZEWIJANIA kursor i przy użyciu innych opcji pobierania

Poniższy przykład tworzy SCROLL kursor , aby umożliwić pełne możliwości przewijania za pośrednictwem LAST, PRIOR, RELATIVE, i ABSOLUTE Opcje.

USE AdventureWorks2008R2;
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