Udostępnij przez


sp_cursor (języka Transact-SQL)

Żądania umieszczone aktualizacje.Ta procedura wykonuje operacje na jeden lub więcej wierszy w buforze pobrania kursorw.sp_cursor is invoked by specifying ID = 1 in a tabular data stream (TDS) packet.

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

Składnia

sp_cursor  cursor, optype, rownum, table
    [ , value [...n] ] ]

Argumenty

  • cursor
    Dojście kursor .cursorjest wymagany parametr, który wzywa do int wartości wejściowych.cursorjest dojście wartość generowana przez SQL Server i zwrócone przez sp_cursoropen procedury.

  • optype
    Jest wymagany parametr, który wyznacza jakie operacji kursor zostanie wykonana.optypewymaga jednego z następujących int wartości wejściowych.

    Wartość

    Nazwa

    Opis

    0X0001

    AKTUALIZACJA

    Służy do aktualizowania jeden lub więcej wierszy w buforze pobierania.Wierszy określona w rownum re-accessed i aktualizowane.

    0X0002

    USUŃ

    Służy do usuwania jednego lub więcej wierszy w buforze pobierania.Wierszy określona w rownum re-accessed i usunięte.

    0X0004

    WSTAW

    Wstawia dane bez tworzenia INSERT instrukcja.

    0X0008

    ODŚWIEŻ

    Używany do uzupełniania buforu z tabel podstawowych i można odświeżyć wiersza, jeśli aktualizacja lub usunięcie zakończy się niepowodzeniem z powodu kontroli optymistycznej współbieżność lub po aktualizacji.

    0X10

    ZABLOKUJ

    Powoduje, że SQL Server u blokady nabytych na strona zawierającej określonego wiersza.Ta blokada jest zgodny z blokadami S, ale nie z blokady x lub inne blokady U.Można zaimplementować krótkoterminowych blokowania.

    0X20

    SETPOSITION

    Jest używane tylko wtedy, gdy program ma wydawać następnych SQL Server umieszczony DELETE lub UPDATE instrukcja.

    0X40

    BEZWZGLĘDNE

    Należy używać tylko w połączeniu z aktualizacji lub usunięcia.BEZWZGLĘDNA jest używana tylko z zestawu KLUCZY kursory.Ignorowane dynamiczne kursory i kursory STATYCZNE nie mogą być aktualizowane.

    UwagaUwaga:
    BEZWZGLĘDNA jest określona w wierszu w zestaw kluczy, które nie zostały pobrane, operacja może się nie powieść wyboru współbieżność , i nie można zagwarantować zwrotu wynik.
  • rownum
    Określa, które wiersze w buforze pobrania, który kursor będzie działać, aktualizowania lub usuwania.

    Ostrzeżenie

    Nie wpływa to na dowolnej operacji pobierania względna, NASTĘPNY lub poprzedni punkt początkowy, ani żadnych aktualizacji lub usuwania wykonywane przy użyciu sp_cursor.

    rownumjest wymagany parametr, który wzywa do int wartości wejściowych.

    • 1
      Określa pierwszy wiersz w buforze pobierania.

    • 2
      Oznacza drugiego wiersza w buforze pobierania.

    • 3, 4, 5
      Oznacza trzeci wiersz i tak dalej.

    • n
      Oznacza n-ty wierszy w buforze pobierania.

    • 0
      Oznacza wszystkie wiersze w buforze pobierania.

      Ostrzeżenie

      Obowiązuje tylko do użytku z aktualizacji, DELETE, ODŚWIEŻANIE lub ZABLOKUJ optype wartości.

  • table
    Nazwa tabeli, która identyfikuje tabela , optype stosuje się do definicji kursor obejmuje łączyć lub nazwy niejednoznaczne kolumna są zwracane przez value parametru.Jeśli nie określonej tabela jest określony, domyślnie jest pierwszej tabela w klauzulaFROM.table to parametr opcjonalny, który wymaga ciąg wartości wejściowej.ciąg może być określona jako dowolny znak lub typ danych UNICODE.tablemoże być nazwa tabela wieloczęściowego.

  • value
    Służy do wstawiania lub zaktualizować wartości.valueciąg parametr jest używany wyłącznie z aktualizacji i WSTAWIANIA optype wartości.ciąg może być określona jako dowolny znak lub typ danych UNICODE.

    Ostrzeżenie

    Nazwa parametru value mogą być przypisane przez użytkownika.

Wartości kodów powrotnych

Podczas korzystania z RPC pozycjonowane operacji usuwania lub aktualizacji z buforu numer 0 zwróci komunikat DONE z rowcount 0 (Brak) lub 1 (sukces) dla każdego wiersza w buforze pobierania.

Uwagi

Parametr optype

Z wyjątkiem kombinacji SETPOSITION UPDATE, DELETE, odświeżania lub ZABLOKUJ; lub BEZWZGLĘDNEGO z aktualizacji lub usuwania, optype wartości są wzajemnie wyłączności.

ZESTAW klauzula wartość aktualizacji jest zbudowane z value parametru.

Korzyścią za pomocą polecenia WSTAW optype wartość jest możliwość uniknięcia konwersji - znakowy danych do formatu znaków dla wstawki.Wartości są określone w ten sam sposób aktualizacja.Jeśli wymagane kolumny nie są uwzględniane, WSTAW nie powiedzie się.

Wartość SETPOSITION nie narusza żadnych operacji pobierania względna, NASTĘPNY lub poprzedni punkt początkowy, ani wszystkich aktualizacji lub usuwania wykonywane przy użyciu sp_cursor interfejs.Stanowisko jest zestaw na 1 bezbłędnie zwracanych spowoduje dowolną liczbę, która określa wiersz w buforze pobierania.Po wykonaniu SETPOSITION stanowisko pozostają w mocy do czasu następnego sp_cursorfetch operacji, Transact-SQL operacji pobierania lub sp_cursor SETPOSITION operacji za pośrednictwem tego samego kursor.Kolejne sp_cursorfetch operacji będzie zestaw położenie kursor w pierwszym wierszu w buforze pobierania nowych, podczas gdy inne wywołania kursor nie wpłynie na wartość pozycji.SETPOSITION mogą być połączone przez klauzula OR odświeżania, UPDATE, DELETE lub ZABLOKOWAĆ w kolejności, aby zestaw wartość pozycji do ostatniego wiersza zmodyfikowane.

Jeśli wiersz w buforze pobierania nie jest określony przez rownum parametr, stanowisko będzie zestaw na 1, z nie zwróciła błąd.Po pozycji jest zestaw, obowiązują pozostaje aż do następnego sp_cursorfetch operacji, Transact-SQL operacji pobierania lub sp_cursor SETPOSITION operacja jest wykonywana na tym samym kursor.

SETPOSITION być połączone przez lub klauzula z odświeżania, AKTUALIZACJĘ, usuwanie lub ZABLOKUJ zestaw położenie kursor do ostatniego wiersza zmodyfikowane.

Parametr rowNum

Jeśli określony, rownum parametr może być interpretowana jako numer wiersza w obrębie zestawu kluczy, zamiast numeru wiersza w buforze pobierania.Użytkownik jest odpowiedzialny za zapewnienie utrzymania sterowania współbieżność .Oznacza to, że dla kursory SCROLL_LOCKS musi niezależnie zachować blokada w danym wierszu (można to zrobić za pomocą transakcji).OPTYMISTYCZNEGO liczby kursorów można musi mieć wcześniej pobrano wierszy do wykonania tej operacji.

tabela Parametr

Jeśli optype Aktualizacja ma wartość lub WSTAW i pełnej aktualizacji lub instrukcja insert jest przesyłana w postaci value parametr, wartość określona dla table jest ignorowana.

Ostrzeżenie

Odnoszące się do widoków, można modyfikować tylko jedną tabela uczestniczących w widoku.value Parametru nazwy kolumna muszą odzwierciedlać nazw kolumna w widoku, ale nazwa tabela może być tabela bazowa podstawowej (w takim przypadek sp_cursor będzie podstawić nazwę widoku).

wartość parametru

Istnieją dwa rozwiązania alternatywne do zasady używania value jak wspomniano wcześniej w sekcji argumenty:

  1. Można użyć nazwy '@' Pre oczekującego na nazwę kolumna na liście wybierz dowolne o nazwie value Parametry.Jedną z zalet tej metody jest, że konwersja danych może nie być konieczne.

  2. Parametru do przedstawienia pełnej aktualizacji lub WSTAW instrukcja lub używać wielu parametrów do przesyłania części UPDATE lub INSERT instrukcja co SQL Server następnie utworzy na pełną instrukcja. Przykłady to można znaleźć w sekcji przykłady w dalszej części tego tematu. 

Przykłady

Alternatywne wartości parametru używa

Aktualizacja:

Gdy używany jest jeden parametr, mogą być składane AKTUALIZUJĄCĄ instrukcja następującej składni:

[ [ UPDATE <table name> ] SET ] {<column name> = expression} [,…n]

Ostrzeżenie

Jeśli aktualizacja <nazwatabela> jest określony, wszystkie wartości określone dla table parametr będzie zignorowany.

W przypadku wielu parametrów pierwszego parametru musi być ciąg w następującej formie:

[ SET ] <column name> = expression [,... n]

i kolejnych parametry muszą być w formie:

<column name> = expression [,... n]

W tym przypadek <nazwatabela> w aktualizacji konstruowanej instrukcja jest jeden określony lub ustawiana domyślnie przez table parametru.

Aby WSTAWIĆ:

Gdy używany jest jeden parametr, mogą być składane INSERT instrukcja następującej składni:

[ [ INSERT [INTO] <table name> ] VALUES ] ( <expression> [,... n] )

Ostrzeżenie

Jeśli wstawianie <Nazwatabela> jest określony, wszystkie wartości określone dla table parametr będzie zignorowany.

W przypadku wielu parametrów pierwszego parametru musi być ciąg w następującej formie:

[ VALUES ( ] <expression> [,... n]

i kolejnych parametry muszą być w formie:

expression [,... n]

z wyjątkiem przypadków, w których wartości określono, w którym to przypadek musi istnieć oznaczeniami ")" po ostatnim wyrażenie.W tym przypadek <Nazwatabela> w UDPATE konstruowanej instrukcja jest jeden określony lub ustawiana domyślnie przez table parametru.

Ostrzeżenie

Jest możliwe przedstawienie jeden parametr nazwany parametr, oznacza to, że "@VALUES".W tym przypadek dopuszcza się inne parametry nazwane.