sp_cursorprepare (Transact-SQL)
Применимо к:SQL Server
Компилирует инструкцию или пакет курсора в план выполнения, но не создает курсор. Скомпилированная инструкция может позже использоваться процедурой sp_cursorexecute. Эта процедура, в сочетании с sp_cursorexecute, имеет ту же функцию, что и sp_cursoropen, но разделена на два этапа. sp_cursorprepare вызывается путем указания идентификатора = 3 в пакете табличного потока данных (TDS).
Соглашения о синтаксисе Transact-SQL
Синтаксис
sp_cursorprepare prepared_handle OUTPUT , params , stmt , options
[ , scrollopt [ , ccopt ] ]
[ ; ]
Аргументы
prepared_handle
Созданный SQL Server идентификатор подготовленного дескриптора , возвращающий целочисленное значение.
Заметка
prepared_handle впоследствии предоставляется процедуре sp_cursorexecute для открытия курсора. Когда дескриптор создан, он существует до выхода пользователя из системы или до тех пор, пока не будет явным образом удален с помощью процедуры sp_cursorunprepare.
params
Указывает параметризованные инструкции. Определение параметров переменных заменено маркерами параметров в инструкции. params — это обязательный параметр, который вызывает входное значение ntext, nchar или nvarchar . Если инструкция не параметризована, необходимо ввести значение NULL.
Заметка
Используйте строку ntext в качестве входного значения, если stmt параметризуется, а значение scrollopt PARAMETERIZED_STMT имеет значение ON.
stmt
Определяет результирующий набор курсора. Параметр stmt является обязательным и вызывает входное значение ntext, nchar или nvarchar .
Заметка
Правила указания значения stmt совпадают с правилами для sp_cursoropen, за исключением того, что тип данных строки stmt должен быть ntext.
options
Необязательный параметр, возвращающий описание столбцов результирующего набора курсора. для параметров требуется следующее входное значение int .
значение | Description |
---|---|
0x0001 | RETURN_METADATA |
scrollopt
Параметр прокрутки. Scrollopt — это необязательный параметр, который требует одного из следующих входных значений int .
значение | Description |
---|---|
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 |
Так как запрошенное значение может не соответствовать курсору, определенному stmt, этот параметр служит как входным, так и выходным данным. В таких случаях SQL Server присваивает соответствующее значение.
ccopt
Параметр управления параллелизмом. ccopt — это необязательный параметр, который требует одного из следующих входных значений int .
значение | Description |
---|---|
0x0001 | READ_ONLY |
0x0002 | SCROLL_LOCKS (прежнее название — LOCKCC) |
0x0004 | ОПТИМИСТИЧНЫЙ (ранее известный как OPTCC) |
0x0008 | OPTIMISTIC (прежнее название — 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 |
Как и при прокрутке, SQL Server может назначить другое значение, отличное от запрошенного.
Замечания
Параметр состояния RPC может иметь следующие значения.
значение | Description |
---|---|
0 | Удачное завершение |
0x0001 | Сбой |
1FF6 | Невозможно вернуть метаданные. Примечание. Причина этого заключается в том, что оператор не создает результирующий набор; например, это инструкция INSERT или DDL. |
Примеры
Ниже приведен пример использования sp_cursorprepare и 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
Если stmt параметризуется и значение scrollopt PARAMETERIZED_STMT имеет значение ON, формат строки выглядит следующим образом:
{ <имя> локальной переменной**<тип> данных } [ ,...n ]
См. также
sp_cursorexecute (Transact-SQL)
sp_cursoropen (Transact-SQL)
sp_cursorunprepare (Transact-SQL)
Системные хранимые процедуры (Transact-SQL)
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по