Udostępnij za pośrednictwem


sp_cursorprepexec (Transact-SQL)

Dotyczy:programu SQL ServerAzure SQL DatabaseAzure Synapse AnalyticsAnalytics 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;