Udostępnij za pomocą


sp_cursorprepexec (Transact-SQL)

Dotyczy:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)SQL Database w Microsoft Fabric

Kompiluje plan dla przesłanej instrukcji kursora lub partii, a następnie tworzy i wypełnia kursor. sp_cursorprepexec łączy funkcje sp_cursorprepare i sp_cursorexecute. Ta procedura jest wywoływana przez określenie ID = 5 w pakiecie strumienia danych tabelarycznych (TDS).

Transact-SQL konwencje składni

Składnia

sp_cursorprepexec prepared handle OUTPUT , cursor OUTPUT , params , statement , options
    [ , scrollopt [ , ccopt [ , rowcount ] ] ]
    [ , '@parameter_name [ , ...n ]' ]

Argumenty

Ważny

Argumenty dla rozszerzonych procedur składowanych należy wprowadzić w określonej kolejności zgodnie z opisem w sekcji składni. Jeśli parametry są wprowadzane poza kolejnością, wystąpi komunikat o błędzie.

przygotowany uchwyt

Program SQL Server wygenerowany przygotowany do obsługi identyfikator. Przygotowany parametr dojścia jest wymagany i zwraca wartość int.

kursora

Program SQL Server wygenerował identyfikator kursora. Parametr kursora jest wymaganym parametrem, który musi być podany we wszystkich kolejnych procedurach, które działają na tym kursorze, na przykład sp_cursorfetch.

params

Identyfikuje sparametryzowane instrukcje. Parametry definicji zmiennych są zastępowane znacznikami parametrów w instrukcji . Parametr parametru jest wymagany. Po określeniu parametry wywołuje wartość wejściową ntext, nchar lub nvarchar .

Nuta

Użyj ciągu ntext jako wartości wejściowej, gdy instrukcja jest sparametryzowana, a wartość PARAMETERIZED_STMT przewijania jest włączona.

instrukcji

Definiuje zestaw wyników kursora. Instrukcja jest wymagana i wywołuje ntext, ncharlub nvarchar wartości wejściowej.

Nuta

Reguły określania wartości instrukcji są takie same jak sp_cursoropen, z wyjątkiem, że typ danych ciągu instrukcji musi być ntext.

opcje

Opcjonalny parametr, który zwraca opis kolumn zestawu wyników kursora. Parametr options wymaga następującej wartości wejściowej int .

Wartość Opis
0x0001 RETURN_METADATA

przewijania

Opcja przewijania. Parametr scrollopt jest opcjonalny. Po określeniu elementu scrollopt wymaga jednej z następujących wartości wejściowych int .

Wartość Opis
0x0001 ZESTAWU KLUCZY
0x0002 DYNAMICZNY
0x0004 FORWARD_ONLY
0x0008 STATYCZNY
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 opcja nie jest odpowiednia dla kursora zdefiniowanego przez instrukcję , ten parametr służy zarówno jako dane wejściowe, jak i wyjściowe. W takich przypadkach program SQL Server przypisuje odpowiedni typ i modyfikuje tę wartość.

Opcja kontroli współbieżności. Parametr ccopt jest opcjonalny. Po określeniu parametr ccopt wymaga jednej z następujących wartości wejściowych int .

Wartość Opis
0x0001 READ_ONLY
0x0002 SCROLL_LOCKS (wcześniej znany jako LOCKCC)
0x0004 OPTCC (wcześniej znany jako OPTCC)
0x0008 OPTCCVAL (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

Podobnie jak w przypadku przewijaniaprogram SQL Server może przypisać inną wartość niż żądana.

rowcount

Opcjonalny parametr, który oznacza liczbę wierszy buforu pobierania do użycia z elementem AUTO_FETCH. Wartość domyślna to 20 wierszy. Parametr rowcount zachowuje się inaczej po przypisaniu jako wartość wejściowa w porównaniu z wartością zwracaną.

Jako wartość wejściowa Jako wartość zwracana
Po określeniu AUTO_FETCH z kursorami FAST_FORWARD rowcount reprezentuje liczbę wierszy, które mają być umieszczane w buforze pobierania. Reprezentuje liczbę wierszy w zestawie wyników. Po określeniu wartości scrolloptAUTO_FETCHwiersz zwraca liczbę wierszy pobranych do buforu pobierania.

parameter_name

Wyznacza co najmniej jedną nazwę parametrów zdefiniowaną w parametrze params . Należy podać parametr dla każdego parametru uwzględnionego w parametrach . Ten parametr nie jest wymagany, gdy instrukcja Transact-SQL lub partia w parametrach nie ma zdefiniowanych parametrów.

Zwracanie wartości kodu

Jeśli wartość parametrów zwraca NULLwartość , instrukcja nie jest sparametryzowana.

Przykłady

W tym przykładzie pokazano użycie sp_cursorprepexec. Uruchamia zapytanie względem Person tabeli w AdventureWorks2025 bazie danych zwracające wszystkie rekordy, w których imię to "Kirby".

USE AdventureWorks2022;
GO

DECLARE @prep_handle INT,
    @cursor INT,
    @scrollopt INT = 4104,
    @ccopt INT = 8193,
    @rowcnt INT;

EXECUTE sp_cursorprepexec
    @prep_handle OUTPUT,
    @cursor OUTPUT,
    N'@fName nvarchar(100)',
    N'SELECT FirstName, LastName FROM Person.Person WHERE FirstName = @fName',
    @scrollopt,
    @ccopt,
    @rowcnt OUTPUT,
    'Kirby';

EXECUTE sp_cursorfetch @cursor;