sp_cursorfetch (języka Transact-SQL)

Pobiera buforu jeden lub więcej wierszy z bazy danych.Grupa wierszy w tym buforze jest nazywana kursorw buforu pobierania.sp_cursorfetch is invoked by specifying ID = 7 in a tabular data stream (TDS) packet.

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

Składnia

sp_cursorfetch cursor 
    [ , fetchtype [ , rownum [ , nrows ] ] ] 

Argumenty

  • cursor
    Jest dojście wartość generowana przez SQL Server i zwrócone przez sp_cursoropen.cursorjest wymagany parametr, który wzywa do int wartości wejściowych.Aby uzyskać więcej informacji zobacz sekcję Spostrzeżenia w dalszej części tego tematu.

  • fetchtype
    Określa, które bufor kursor do pobrania.fetchtypeto parametr opcjonalny, który wymaga jednego z następujących wartości całkowitych wejściowego.

    Wartość

    Nazwa

    Opis

    0X0001

    PIERWSZY

    Pobiera pierwszą bufor nrows wierszy.Jeśli nrows jest równe 0, kursor jest umieszczony przed zestaw wyników i nie są zwracane żadne wiersze.

    0X0002

    DALEJ

    Pobiera następne bufor nrows wierszy.

    0X0004

    POPRZEDNI

    Pobiera bufor poprzedniego nrows wierszy.

    UwagaUwaga:
    FORWARD_ONLY kursor za pomocą poprzedni zwraca komunikat o błędzie, ponieważ FORWARD_ONLY obsługuje tylko przewijanie w jednym kierunku.

    0X0008

    OSTATNI

    Pobiera ostatnią bufor nrows wierszy.Jeśli nrows jest równe 0, po zestaw wyników zostanie umieszczony kursor i nie są zwracane żadne wiersze.

    UwagaUwaga:
    Korzystanie z ostatniego FORWARD_ONLY kursor zwraca komunikat o błędzie, ponieważ FORWARD_ONLY obsługuje tylko przewijanie w jednym kierunku.

    0x10

    BEZWZGLĘDNE

    Pobiera bufor o nrows wierszy, począwszy od rownum wiersza.

    UwagaUwaga:
    Przy użyciu BEZWZGLĘDNEJ dynamiczne kursor lub FORWARD_ONLY kursor zwraca komunikat o błędzie, ponieważ FORWARD_ONLY obsługuje tylko przewijanie w jednym kierunku.

    0x20

    WZGLĘDNE

    Pobiera bufor o nrows wierszy, począwszy od wiersza, który został określony jako rownum wartości z wierszy w pierwszym wierszu w bieżącym blok.W tym przypadek rownum może być liczbą ujemną.

    UwagaUwaga:
    Przy użyciu względnej FORWARD_ONLY kursor zwraca komunikat o błędzie, ponieważ FORWARD_ONLY obsługuje tylko przewijanie w jednym kierunku.

    0x80

    ODŚWIEŻ

    Zostaje uzupełniona buforu z tabel podstawowych.

    0x100

    INFORMACJE O

    Pobiera informacje o kursor.Ta informacja jest zwracana za pomocą rownum i nrows Parametry.W związku z tym, kiedy INFO jest określony, rownum i nrows stają się parametry wyjściowe.

    0x200

    PREV_NOADJUST

    Jest używana podobnie jak poprzedniaJednakże jeśli okaże się u góry, zestaw wyników przedwcześnie, wyniki mogą być różne.

    0x400

    SKIP_UPDT_CNCY

    Musi być używany z jednym z innych fetchtype wartości, z wyjątkiem INFO.

    Ostrzeżenie

    Brak obsługi dla wartości 0x40.

    Aby uzyskać więcej informacji zobacz sekcję Spostrzeżenia w dalszej części tego tematu.

  • rownum
    To parametr opcjonalny, który jest używany do określenia pozycji wiersz BEZWZGLĘDNYM i informacje o fetchtype wartości przy użyciu tylko wartości całkowite dla wejścia lub wyjścia.rownumSłuży jako przesunięcie wiersza dla fetchtype bitowa wartość względna.rownumjest ignorowany dla innych wartości.Aby uzyskać więcej informacji zobacz sekcję Spostrzeżenia w dalszej części tego tematu.

  • nrows
    To parametr opcjonalny, który jest używany do określenia liczby wierszy do pobrania.Jeśli nrows nie jest określony, wartość domyślna to 20 wierszy.Aby zestaw położenie bez zwracanie danychOkreśl wartość 0.Gdy nrows jest stosowany do fetchtype informacje kwerenda zwraca całkowitą liczbę wierszy w tej kwerendzie.

    Ostrzeżenie

       nrowsignorowane przez ODŚWIEŻANIE fetchtype wartości bitów.

    Aby uzyskać więcej informacji zobacz sekcję Spostrzeżenia w dalszej części tego tematu.

Wartości kodów powrotnych

Po określeniu wartości bitów informacje o wartości, które mogą być zwracane są wyświetlane w poniższych tabelach.

Ostrzeżenie

: Jeśli nie zostały zwrócone żadne wiersze, zawartość buforu pozostają były.

<rownum>

Ustaw

W przeciwnym razie Otwórz

0

Jeśli umieszczony przed zestaw wyników

0

Jeśli po zestaw wyników

-1

Dla zestawu KLUCZY i STATYCZNE kursory

Bezwzględne do wiersza numer bieżącej pozycji w zestaw wyników

Dla dynamiczne kursory

1

Dla BEZWZGLĘDNA

-1 zwraca ostatni wiersz zestaw.

-2 zwraca sekundę do ostatniego wiersza w zestaw.

UwagaUwaga:
Jeśli wymagana jest więcej niż jeden wiersz do pobrania w tym przypadek, ostatnie dwa wiersze zestaw wyników są zwracane.

<nrows>

Ustaw

W przeciwnym razie Otwórz

0

Dla zestawu KLUCZY i STATYCZNE kursory

Zazwyczaj bieżący rozmiar zestawu kluczy.

–m Jeśli kursor znajduje się w asynchroniczne tworzenie z m wierszy z tym punktem.

Dla dynamiczne kursory

-1

Uwagi

kursor Parametr

Zanim zostały wszystkie operacje pobierania, domyślne położenie kursor jest przed zestaw wynikówpierwszy wiersz.

Parametr fetchtype

Z wyjątkiem dla SKIP_UPD_CNCY fetchtype wartości są wzajemnie wyłączności.

Po określeniu SKIP_UPDT_CNCY wartości sygnatury czasowej w kolumna nie są zapisywane do zestawu kluczy tabela , wiersz jest pobierane lub odświeżane.Jeśli aktualizowane wiersz zestawu wartości kolumny sygnatury czasowej pozostają poprzednią wartość.Jeśli dodaje się wiersz zestawu kluczy, wartości dla kolumny sygnatury czasowej są niezdefiniowane.

Dla zestawu KLUCZY kursorów to oznacza, że zestaw kluczy tabela ma wartości zestaw podczas ostatniego nonskip FETCH, jeśli wykonano jedną.Jeśli nie ma wartości zestaw podczas zapełnianie.

Dynamiczne kursory oznacza to że jeśli Pomiń jest wykonywane z odświeżenie, daje te same wyniki jako zestaw KLUCZY.Dla dowolnego innego typu pobranie zestawu kluczy tabela jest obcinana.Oznacza to, że dodaje się wiersze i wartości sygnatury czasowej kolumna(s) są niezdefiniowane.Dlatego też po uruchomieniu sp_cursorfetch dla dynamiczne kursory unikać SKIP_UPDT_CNCY wszelkie działania inne niż odświeżania.

Jeśli operacji pobrania nie powiedzie się, ponieważ jest pozycja żądanej kursor poza zestaw wyników, pozycja kursor jest zestaw tuż po ostatnim wierszu.Jeśli operacji pobrania nie powiedzie się, ponieważ pozycja żądanej kursor jest umieszczony przed zestaw wyników, pozycja kursor jest zestaw przed pierwszym wierszem.

Parametr rowNum

Podczas korzystania z rownum, bufor jest wypełniony, począwszy od określonego wiersza.

fetchtype Wartość BEZWZGLĘDNA odwołuje się do pozycji rownum w obrębie całej zestaw wyników.Liczba ujemna z BEZWZGLĘDNĄ Określa, że operacja zlicza wiersze od końca zestaw wyników.

fetchtype Wartość względna odwołuje się do pozycji rownum w stosunku do położenia kursor na początku bieżącego buforu.Liczba ujemna z WZGLĘDNE Określa, że kursor przejść wstecz od bieżącej pozycji kursor .

Parametr nrows

fetchtype Wartości odświeżania i informacje o zignorować ten parametr.

Po określeniu fetchtype wartość pierwszej, który ma nrow wartość 0, kursor jest umieszczony przed zestaw wyników , dla którego nie wierszy w buforze pobierania.

Po określeniu fetchtype wartość ostatniego, który ma nrow wartość 0, kursor jest umieszczony za zestaw wyników , dla którego żadne wiersze w bieżącym buforze pobierania.

Dla fetchtype wartości NASTĘPNY, poprzedni, BEZWZGLĘDNE, WZGLĘDNE i PREV_NOADJUST, nrow wartość 0 jest nieprawidłowa.

Uwagi dotyczące RPC

RPC zwracać stanu wskazuje, czy rozmiar parametr keyset jest ostateczne lub nie, to znaczy jeśli zestawu kluczy lub tymczasowej tabela trwa zapełnianie asynchronicznie.

Parametr Stan RPC jest zestaw na jedną z wartości podane w poniższej tabela.

Wartość

Opis

0

Procedura została wykonana pomyślnie.

0X0001

Procedura nie powiodło się.

0X0002

Pobieranie w kierunku ujemnym spowodowane stanowisko kursor należy zestaw początek zestaw wyników, podczas pobierania logicznie byłby przed wyniki.

0x10

Przewijanie kursor został automatycznie zamknięty.

Wiersze są zwracane jako typowy zestaw wyników, to znaczy: formatkolumna (0x2a) wierszy (0xd1) następuje gotowe (0xfd).Tokeny metadane są wysyłane w tym samym formacie, co określony dla sp_cursoropen, oznacza to: 0x81, 0xa5 i 0xa4 dla użytkowników programu SQL Server 7.0 i tak dalej.Wskaźniki stanu wierszy są wysyłane jako ukryte kolumny, podobny do trybu PRZEGLĄDANIA na końcu każdego wiersza z nazwą kolumna rowstat i typu danych INT4.To rowstat kolumna zawiera jedną z wartości przedstawione w poniższej tabela.

Wartość

Opis

0X0001

FETCH_SUCCEEDED

0X0002

FETCH_MISSING

Ponieważ TDS protokół zapewnia sposobem wyślij końcowy stan kolumna bez wysyłania poprzedniej kolumny, danych manekina jest wysyłane Brak wierszy (nullable pól zestaw na null, stała długość pola zestaw na 0, pole jest puste, lub domyślną dla tej kolumna, w stosownych przypadkach).

DONE rowcount będzie zawsze równa zero.Komunikat DONE zawiera rzeczywiste, zestaw wyników rowcount i może pojawić się błąd lub komunikaty informacyjne między komunikaty TDS .

Na żądanie metadane dotyczących kursorprzez lista wyboru zwracane w strumieniu TDS , zestaw flagę wejścia RPC RETURN_METADATA 1.

Przykłady

A.Aby zmienić położenie kursor za pomocą poprzedni

Załóżmy, że h2 kursor wywołałoby zestaw wyników o następującej treści z bieżącej pozycji, jak pokazano:

row 1 contents    
row 2 contents
row 3 contents
row 4 contents  <-- current position
row 5 contents 
row 6 contents

Dalej, sp_cursorfetch Poprzedni, który ma nrows wartość 5 logicznie byłoby Umieść kursor dwóch wierszy przed pierwszym wierszem zestaw wyników.W tych przypadkach kursor jest dostosowywana do uruchamiania w pierwszym wierszu i zwraca liczbę wierszy wymagana.Często oznacza to, że zwróci wierszy, które znajdowały się w buforze uprzedniego pobrania.

Ostrzeżenie

Jest dokładnie przypadek , w którym parametr Stan RPC jest zestaw na wartość 2.

B.Aby powrócić do mniejszej liczby wierszy niż poprzedni przy użyciu PREV_NOADJUST

PREV_NOADJUST nigdy nie zawiera żadnych wierszy w lub po aktualnej pozycji kursor w blok wierszy, które zwraca.W przypadkach gdy poprzedni zwracająca wiersze po bieżącej pozycji PREV_NOADJUST zwraca mniej wierszy niż wymagane w nrows.Biorąc pod uwagę bieżącej pozycji w przykładzie w starszych zastosowania poprzedni, sp_cursorfetch(h2, 4, 1, 5) pobiera następujące wiersze:

row1 contents 
row2 contents
row3 contents
row4 contents
row5 contents

Jednakże, gdy PREV_NOADJUST jest stosowany, sp_cursorfetch(h2, 512, 6, 5) pobiera tylko następujące wiersze:

row1 contents 
row2 contents
row3 contents