Заметка
Доступ к этой странице требует авторизации. Вы можете попробовать войти в систему или изменить каталог.
Доступ к этой странице требует авторизации. Вы можете попробовать сменить директорию.
Область применения:SQL Server
Компилирует инструкцию курсора или пакет в план выполнения, но не создает курсор. Скомпилированный оператор можно использовать позже sp_cursorexecute. Эта процедура, в сочетании с sp_cursorexecute, имеет ту же функцию, что sp_cursoropenи , но разделена на два этапа.
sp_cursorprepare вызывается путем ID = 3 указания в пакете табличного потока данных (TDS).
Соглашения о синтаксисе Transact-SQL
Синтаксис
sp_cursorprepare prepared_handle OUTPUT , params , stmt , options
[ , scrollopt [ , ccopt ] ]
[ ; ]
Аргументы
Важный
Аргументы для расширенных хранимых процедур необходимо ввести в определенном порядке, как описано в разделе Синтаксис. Если параметры введены вне порядка, возникает сообщение об ошибке.
prepared_handle
Подготовленный 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
Возвращает описание столбцов результирующего набора курсоров. Параметр options имеет значение int с значением по умолчанию NULL. Если задано значение 0x0001, это означает RETURN_METADATA.
scrollopt
Параметр прокрутки. Параметр scrollopt — это необязательный параметр, который требует одного из следующих входных значений int .
| значение | Описание |
|---|---|
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 .
| значение | Описание |
|---|---|
0x0001 |
READ_ONLY |
0x0002 |
SCROLL_LOCKS (ранее известный как LOCKCC) |
0x0004 |
OPTIMISTIC (ранее известный как 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 является одним из следующих значений:
| значение | Описание |
|---|---|
0 |
Удачное завершение |
0x0001 |
Сбой |
1FF6 |
Не удалось вернуть метаданные. Примечание. Причина этого заключается в том, что инструкция не создает результирующий набор. Например, это INSERT инструкция DDL или инструкция DDL. |
Примеры
Следующий код является примером использования sp_cursorprepare и sp_cursorexecute:
DECLARE @handle AS INT, @p5 AS INT, @p6 AS INT;
EXECUTE sp_cursorprepare
@handle OUTPUT,
N'@dbid int',
N'select * from sys.databases where database_id < @dbid',
1,
@p5 OUTPUT,
@p6 OUTPUT;
DECLARE @p1 AS INT;
SET @P1 = @handle;
DECLARE @p2 AS INT;
DECLARE @p3 AS INT;
DECLARE @p4 AS INT;
SET @P6 = 4;
EXECUTE sp_cursorexecute
@p1,
@p2 OUTPUT,
@p3 OUTPUT,
@p4 OUTPUT,
@p5 OUTPUT,
@p6;
EXECUTE sp_cursorfetch @P2;
EXECUTE sp_cursorunprepare @handle;
EXECUTE sp_cursorclose @p2;
При параметризации stmt и PARAMETERIZED_STMTON формат строки находится в следующей форме:
<parameter_name> <data_type> [ ,... n ]