sp_cursoropen (języka Transact-SQL)

Otwiera kursor.sp_cursoropendefiniuje SQL instrukcja związanych z kursor i opcje kursor , a następnie uzupełnia kursor.sp_cursoropenjest odpowiednikiem kombinacji Transact-SQL instrukcji DECLARE_CURSOR i Otwórz.Ta procedura jest wywoływany przez określenie Identyfikatora = 2 w strumień danych tabelarycznych (TDS) pakiet.

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

Składnia

sp_cursoropen cursor OUTPUT, stmt 
    [, scrollopt [ OUTPUT ] [ , ccopt [ OUTPUT ] 
    [ ,rowcount OUTPUT [ ,boundparam] [,...n] ] ] ] ] 

Argumenty

  • cursor
    Identyfikator generowany przez serwer kursor SQL .cursorjest dojście wartość dostarczona na wszystkich kolejnych procedur obejmujących kursor, takich jak sp_cursorfetch.cursorjest wymagany parametr z int zwraca wartość.

    cursorUmożliwia wielu kursory aktywna na połączeniu jednej bazy danych.

  • stmt
    Jest wymagany parametr, który definiuje kursor zestaw wyników.Dowolny prawidłową kwerendą ciąg (składnia i powiązanie) dowolnego typu ciąg (niezależnie od Unicode, wielkość itp.) może służyć jako prawidłowy stmt typu wartości.

  • scrollopt
    Przewiń listę opcji.scrolloptto parametr opcjonalny, który wymaga jednego z następujących int wartości wejściowych.

    Wartość

    Opis

    0X0001

    ZESTAW KLUCZY

    0X0002

    DYNAMICZNE

    0X0004

    FORWARD_ONLY

    0X0008

    STATYCZNE

    0x10

    FAST_FORWARD

    0x1000

    PARAMETERIZED_STMT

    0x2000

    AUTO_FETCH

    0x4000

    AUTO_CLOSE

    0x8000

    CHECK_ACCEPTED_TYPES

    0x10000

    KEYSET_ACCEPTABLE

    0x20000

    DYNAMIC_ACCEPTABLE

    0x40000

    FORWARD_ONLY_ACCEPTABLE

    0x80000

    STATIC_ACCEPTABLE

    0x100000

    FAST_FORWARD_ACCEPTABLE

    Ze względu na możliwość, że żądana wartość nie jest odpowiedni dla kursor zdefiniowane przez stmt, ten parametr służy jako danych wejściowych i wyjściowych.W takich przypadkach SQL Server przypisuje odpowiednią wartość.

  • ccopt
    Opcja sterowania współbieżności.ccoptto parametr opcjonalny, który wymaga jednego z następujących int wartości wejściowych.

    Wartość

    Opis

    0X0001

    TYLKO_DO_ODCZYTU

    0X0002

    SCROLL_LOCKS (wcześniej znany jako LOCKCC)

    0X0004

    OPTYMISTYCZNA (wcześniej znany jako OPTCC)

    0X0008

    OPTIMISTIC (wcześniej znany jako OPTCCVAL)

    0x2000

    ALLOW_DIRECT

    0x4000

    UPDT_IN_PLACE

    0x8000

    CHECK_ACCEPTED_OPTS

    0x10000

    READ_ONLY_ACCEPTABLE

    0x20000

    SCROLL_LOCKS_ACCEPTABLE

    0x40000

    OPTIMISTIC_ACCEPTABLE

    0x80000

    OPTIMISITC_ACCEPTABLE

    Tak jak w przypadku scrollopt, SQL Server można zastąpić żądania ccopt wartości.

  • rowcount
    Liczba wierszy buforu pobrania do użycia z AUTO_FETCH.Wartość domyślna to 20 wierszy.rowcountzachowuje się inaczej, przypisywany jako wartości wejściowej lub zwracanej wartości.

    Jako wartości wejściowej

    Jako wartość zwracana

    Gdy AUTO_FETCH scrollopt określona wartość rowcount reprezentuje liczbę wierszy, aby umieścić w buforze pobierania.

    UwagaUwaga:
    >0 jest prawidłowa wartość AUTO_FETCH jest określony, ale w przeciwnym razie jest ignorowana.

    Reprezentuje liczbę wierszy w zestaw wyników, z wyjątkiem sytuacji gdy scrollopt określona wartość AUTO_FETCH.

  • boundparam
    Oznacza użycie dodatkowych parametrów.boundparamParametr opcjonalny, który należy określić, jeśli jest scrollopt PARAMETERIZED_STMT wartość jest zestaw na.

Wartości kodów powrotnych

Jeśli błąd nie jest uruchamiany, sp_cursoropen zwraca jedną z następujących wartości.

  • 0
    Procedura została wykonana pomyślnie.

  • 0X0001
    Wystąpił błąd podczas wykonywania (drobnego błędu, nie wystarczająco poważny podnieść błąd w operacji).

  • 0X0002
    Operacja asynchroniczna jest w toku.

  • 0X0002
    Operacja pobierania jest w procesie.

  • A
    Tego kursor został dealokowane przez SQL Server i jest niedostępny.

Powstaje błąd zwracanych wartości może być niespójny, a nie może zagwarantować dokładności.

Gdy rowcount parametr jest określony jako wartość zwracana występuje następujący zestaw wyników .

  • -1
    Zwracane, jeśli liczba wierszy jest nieznany lub nie ma zastosowania.

  • -n
    Zwracane jest asynchroniczne zapełnianie .Reprezentuje liczbę wierszy, które zostały wprowadzone do pobrania buforu podczas scrollopt określona wartość AUTO_FETCH.

Jeśli serwer RPC jest używany, wartości zwracane są następujące:

  • 0
    Procedura zakończyła się sukcesem.

  • 1
    Procedura nie powiodło się.

  • 2
    Zestaw kluczy kursor jest generowany asynchronicznie.

  • 16
    Przewijanie kursor został automatycznie zamknięty.

Ostrzeżenie

Jeśli sp_cursoropen procedura jest wykonywana pomyślnie, parametrów zwrotnych RPC i zestaw wyników informacji o formaciekolumna TDS(0xa0 & 0xa1 wiadomości) są wysyłane.W razie niepowodzenia, jeden lub więcej komunikatów o błędzie TDS są wysyłane.W każdym przypadekzostaną zwrócone żadne dane wierszy i Sporządzono liczbę wiadomości będzie równa zero.Jeśli używasz wersja programu SQL Server starsze niż wersja 7.0, 0xa0, 0xa1 (standard dla instrukcji SELECT) są zwracane wraz z 0xa5 i 0xa4 token strumieni.Jeśli używasz SQL Server 7.0, 0x81 jest zwracana (standard dla instrukcji SELECT) wraz z 0xa5 i 0xa4 token strumieni.

Uwagi

stmt parametru

Jeśli stmt określa wykonywanie procedura składowanaparametry wejściowe albo może być zdefiniowana jako stałe w ramach stmt ciąglub określone jako boundparam argumentów.Zmienne zadeklarowanej mogą być przekazywane jako parametry związane w ten sposób.

Dopuszczalne zawartości stmt parametru uzależnione, czy nie ccopt ALLOW_DIRECT zwraca wartość zostały połączone przez lub do pozostałej części ccopt wartości, to znaczy:

  • Jeśli ALLOW_DIRECT nie jest określony, albo Transact-SQL ZAZNACZENIE lub wykonanie instrukcja wywoływania dla procedura składowana zawierającą pojedynczą instrukcja SELECT musi być używany.Ponadto instrukcja SELECT musi kwalifikować się jako kursor; oznacza to, że nie może zawierać słowa kluczowe SELECT INTO, aby PRZEGLĄDAĆ lub obliczeń.

  • Jeśli zostanie określony ALLOW_DIRECT, może to spowodować w jednym lub więcej Transact-SQL instrukcji, łącznie z tymi, z kolei wykonać innych procedur przechowywanych z wielu instrukcji.Wybierz inne niż instrukcje lub wszelkie SELECT instrukcja , która zawiera słowa kluczowe SWYBIERA do, aby PRZEGLĄDAĆ lub po prostu zostanie wykonana i nie powoduje powstania kursor.To samo dotyczy wszelkich SELECT instrukcja zawartych w partia wielokrotne instrukcje.W przypadkach gdy instrukcja SELECT zawiera klauzul, które dotyczą tylko kursory klauzule te są ignorowane.Dla wystąpienie, gdy wartość ccopt jest 0x2002, jest to żądanie:

    • Blokuje kursor z przewijania, jeśli tylko pojedynczy wybierz instrukcja , że kwalifikuje się jako kursorlub

    • Wykonanie bezpośrednie instrukcja , jeśli wielokrotne instrukcje, pojedynczy — wybierz instrukcjalub SELECT instrukcja , która nie kwalifikuje się kursor.

Parametr scrollopt

Pierwsze pięć scrollopt wartości (KEYSEY, DYNAMICZNY, FORWARD_ONLY, statyczny i FAST_FORWARD) są wzajemnie wyłączności.

PARAMETERIZED_STMT i CHECK_ACCEPTED_TYPES mogą być połączone przez ani do żadnej z pierwszych pięć wartości.

AUTO_FETCH i AUTO_CLOSE mogą być połączone przez lub FAST_FORWARD.

Jeśli CHECK_ACCEPTED_TYPES jest włączone, co najmniej jeden z ostatnich pięciu lat scrollopt wartości (KEYSET_ACCEPTABLE, DYNAMIC_ACCEPTABLE, FORWARD_ONLY_ACCEPTABLE, STATIC_ACCEPTABLE lub FAST_FORWARD_ACCEPTABLE) musi być również na.

Kursory STATYCZNE są zawsze otwierane jako TYLKO_DO_ODCZYTU.Oznacza to, że podstawowej tabela nie można zaktualizować za pomocą tego kursor.

Parametr ccopt

Pierwsze cztery ccopt wartości (TYLKO_DO_ODCZYTU, SCROLL_LOCKS i obie wartości OPTYMISTYCZNEGO) są wzajemnie wyłączności.

Ostrzeżenie

Wybranie jednej z czterech pierwszych ccopt wartości decyduje czy kursor jest tylko do odczytu, lub jeżeli wykorzystywane są metody blokowania lub optymistycznego zapobieganie utracone aktualizacje.Jeśli ccopt wartość nie zostanie określona, wartością domyślną jest OPTIMISTIC.

ALLOW_DIRECT i CHECK_ACCEPTED_TYPES mogą być połączone przez ani do żadnej z pierwszych czterech wartości.

UPDT_IN_PLACE mogą być połączone przez lub TYLKO_DO_ODCZYTU, SCROLL_LOCKS lub obie wartości OPTYMISTYCZNE.

Jeśli CHECK_ACCEPTED_TYPES jest włączone, co najmniej jeden z czterech ostatnich ccopt wartości (READ_ONLY_ACCEPTABLE, SCROLL_LOCKS_ACCEPTABLE i albo wartości OPTIMISTIC_ACCEPTABLE) także muszą być dalej.

Pozycjonowane aktualizacji i usuwania mogą być wykonywane wyłącznie w buforze pobierania i tylko wtedy, gdy ccopt wartość jest równa SCROLL_LOCKS lub OPTIMISTIC.Jeśli SCROLL_LOCKS jest równa określonej wartości, operacja jest gwarantowane powiodła się.Jeśli OPTIMISTIC jest równa określonej wartości, operacja zakończy się niepowodzeniem, jeśli wiersz został zmieniony od czasu ostatniego została pobrana.

Przyczyny tego błędu jest, że OPTIMISTIC jest równa określonej wartości, optymistycznego waluty kontrolowanie funkcja jest przeprowadzana przez porównywanie sygnatury czasowe lub suma kontrolna wartości ustalone przez SQL Server.Jeśli dowolne z tych wierszy nie są zgodne, operacja nie powiedzie się.

Określanie UPDT_IN_PLACE jako wartość zwracana regulują następujące wyniki:

  • Jeśli nie zestaw podczas wykonywania aktualizacja pozycjonowana na tabela z indeks unikatowy, kursor usuwa wiersz z jego pracy tabela i wstawia go na końcu każdej kolumny klucz , używanych przez kursor, zmieniając kolumny te.

  • Jeśli zestaw na kursor po prostu zaktualizuje kolumn klucz w pracy tabelaoryginalny wiersz.

Parametr bound_param

Nazwa parametru powinny być paramdef , gdy PARAMETERIZED_STMT jest określona zgodnie z komunikatem o błędzie w kodzie.Gdy PARAMETERIZED_STMT nie jest określony, nazwa nie zostanie określona w komunikacie o błędzie.

Uwagi dotyczące RPC

Flaga wejścia RPC RETURN_METADATA można zestaw na 0x0001 żądania listy wybierz kursor metadane będą zwracane w strumieniu TDS .

Przykłady

Parametr bound_param

Wszystkie parametry po piątym są przekazywane razem plan instrukcja jako parametry wejściowe.Pierwszy taki parametr musi być ciąg w postaci:

{ Typ danych nazwa zmiennej lokalnej} [, …n]

Kolejne parametry są używane do przekazania wartości ma być zastępowana local variable name w instrukcja.