Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dotyczy:programu SQL Server
Azure SQL Database
Azure Synapse Analytics
Analytics Platform System (PDW)
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. jest wymagana przygotowana obsługa i zwraca int int.
kursora
Program SQL Server wygenerował identyfikator kursora.
kursor jest wymaganym parametrem, który należy podać 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ów jest wymaganym parametrem wywołującym ntext, ncharlub nvarchar wartość wejściową.
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 w przypadku sp_cursoropen
, z wyjątkiem tego, że typ danych instrukcji ciągu musi być ntext.
opcje
Opcjonalny parametr, który zwraca opis kolumn zestawu wyników kursora. opcje wymagają następującej wartości wejściowej int.
Wartość | Opis |
---|---|
0x0001 |
RETURN_METADATA |
przewijania
Opcja przewijania. przewijania jest opcjonalnym parametrem, który wymaga jednej z następujących wartości wejściowych .
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. jest opcjonalnym parametrem, który 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 AUTO_FETCH. Wartość domyślna to 20 wierszy. rowcount zachowuje się inaczej, gdy jest przypisywana 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 przewijania AUTO_FETCH rowcount zwraca liczbę wierszy pobranych do buforu pobierania. |
parameter_name
Wyznacza co najmniej jedną nazwę parametrów zdefiniowaną w parametrach argumentu. Należy podać parametr dla każdego parametru uwzględnionego w parametrach . Ten argument nie jest wymagany, gdy instrukcja Transact-SQL lub partia w parametrach nie ma zdefiniowanych parametrów.
Zwracanie wartości kodu
Jeśli params zwraca wartość NULL
, instrukcja nie jest sparametryzowana.
Przykłady
W tym przykładzie pokazano użycie sp_cursorprepexec
. Uruchamia zapytanie względem tabeli Person
w bazie danych AdventureWorks2022
zwracając wszystkie rekordy, w których imię to "Katherine".
USE AdventureWorks2022;
GO
DECLARE @prep_handle INT,
@cursor INT,
@scrollopt INT = 4104,
@ccopt INT = 8193,
@rowcnt INT;
EXEC 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,
'Katherine';
EXEC sp_cursorfetch @cursor;