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
Kompiluje instrukcję kursora lub wsadową do planu wykonywania, ale nie tworzy kursora. Skompilowana instrukcja może być później używana przez sp_cursorexecute
. Ta procedura, w połączeniu z sp_cursorexecute
, ma tę samą funkcję co sp_cursoropen
, ale jest podzielona na dwie fazy.
sp_cursorprepare
jest wywoływana przez określenie ID = 3
w pakiecie strumienia danych tabelarycznych (TDS).
Transact-SQL konwencje składni
Składnia
sp_cursorprepare prepared_handle OUTPUT , params , stmt , options
[ , scrollopt [ , ccopt ] ]
[ ; ]
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.
prepared_handle
Wygenerowany identyfikator handle
programu SQL Server, który zwraca wartość int.
prepared_handle następnie jest dostarczany do procedury sp_cursorexecute
w celu otwarcia kursora. Po utworzeniu dojścia istnieje do momentu wylogowania lub jawnego usunięcia go za pomocą procedury sp_cursorunprepare
.
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ą. Wprowadź wartość NULL
, jeśli instrukcja nie jest sparametryzowana.
Użyj ciągu ntext jako wartości wejściowej, gdy stmt jest sparametryzowana, a wartość przewijania PARAMETERIZED_STMT jest włączona.
stmt
Definiuje zestaw wyników kursora. Parametr stmt jest wymagany i wywołuje ntext, **nchar lub nvarchar wartości wejściowej.
Reguły określania wartości stmt są takie same jak sp_cursoropen
, z wyjątkiem, że typ danych ciągu stmt musi być ntext.
opcje
Zwraca opis kolumn zestawu wyników kursora. Parametr opcji jest int z wartością domyślną NULL
. W przypadku ustawienia wartości 0x0001
oznacza to, że RETURN_METADATA
.
przewijania
Opcja przewijania. Parametr scrollopt jest opcjonalnym parametrem, który wymaga jednej z następujących wartości wejściowych int.
Wartość | Opis |
---|---|
0x0001 |
KEYSET |
0x0002 |
DYNAMIC |
0x0004 |
FORWARD_ONLY |
0x0008 |
STATIC |
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 |
Ponieważ żądana wartość może nie być odpowiednia dla kursora zdefiniowanego przez stmt, ten parametr służy zarówno jako dane wejściowe, jak i wyjściowe. W takich przypadkach program SQL Server przypisuje odpowiednią 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 |
OPTIMISTIC (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 |
OPTIMISTIC_ACCEPTABLE |
Podobnie jak w przypadku przewijaniaprogram SQL Server może przypisać inną wartość niż żądana.
Uwagi
Parametr stanu RPC jest jedną z następujących wartości:
Wartość | Opis |
---|---|
0 |
Sukces |
0x0001 |
Niepowodzenie |
1FF6 |
Nie można zwrócić metadanych. Uwaga: Przyczyną jest to, że instrukcja nie generuje zestawu wyników; na przykład jest to instrukcja INSERT lub DDL. |
Przykłady
Poniższy kod to przykład użycia sp_cursorprepare
i sp_cursorexecute
:
DECLARE @handle INT, @p5 INT, @p6 INT;
EXEC sp_cursorprepare @handle OUTPUT,
N'@dbid int',
N'select * from sys.databases where database_id < @dbid',
1,
@p5 OUTPUT,
@p6 OUTPUT;
DECLARE @p1 INT
SET @P1 = @handle;
DECLARE @p2 INT;
DECLARE @p3 INT;
DECLARE @p4 INT;
SET @P6 = 4;
EXEC sp_cursorexecute @p1,
@p2 OUTPUT,
@p3 OUTPUT,
@p4 OUTPUT,
@p5 OUTPUT,
@p6;
EXEC sp_cursorfetch @P2;
EXEC sp_cursorunprepare @handle;
EXEC sp_cursorclose @p2;
Gdy stmt jest sparametryzowana, a wartość PARAMETERIZED_STMT
przewijaniajest ON
, format ciągu ma następującą postać:
<parameter_name> <data_type> [ ,... n ]