Заметка
Доступ к этой странице требует авторизации. Вы можете попробовать войти в систему или изменить каталог.
Доступ к этой странице требует авторизации. Вы можете попробовать сменить директорию.
Относится к:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Система аналитической платформы (PDW)
SQL база данных в Microsoft Fabric
Компилирует план для переданной инструкции или пакета курсора, после чего создает и заполняет курсор.
sp_cursorprepexec объединяет функции sp_cursorprepare и sp_cursorexecute. Эта процедура вызывается путем ID = 5 указания в пакете табличного потока данных (TDS).
Соглашения о синтаксисе Transact-SQL
Синтаксис
sp_cursorprepexec prepared handle OUTPUT , cursor OUTPUT , params , statement , options
[ , scrollopt [ , ccopt [ , rowcount ] ] ]
[ , '@parameter_name [ , ...n ]' ]
Аргументы
Важный
Аргументы для расширенных хранимых процедур необходимо ввести в определенном порядке, как описано в разделе Синтаксис. Если параметры введены вне порядка, возникает сообщение об ошибке.
подготовленный дескриптор
Созданный идентификатор подготовленного дескриптора SQL Server. Параметр подготовленного дескриптора является обязательным и возвращает int.
курсор
Созданный идентификатор курсора SQL Server. Параметр курсора является обязательным параметром, который должен быть предоставлен во всех последующих процедурах, которые действуют на этом курсоре, например sp_cursorfetch.
params
Указывает параметризованные инструкции. Определение параметров переменных заменено маркерами параметров в инструкции. Параметр params является обязательным. При указании парамс вызывает значение ввода ntext, nchar или nvarchar .
Примечание.
Используйте строку ntext в качестве входного значения, если инструкция параметризована, а значение scrollopt PARAMETERIZED_STMT имеет значение ON.
инструкция
Определяет результирующий набор курсора. Параметр инструкции является обязательным и вызывает входное значение ntext, nchar или nvarchar .
Примечание.
Правила указания значения инструкции совпадают с sp_cursoropen, за исключением того, что тип данных строки инструкции должен быть ntext.
options
Необязательный параметр, возвращающий описание столбцов результирующего набора курсора. Параметр параметров требует следующего входного значения int .
| значение | Описание |
|---|---|
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 |
Из-за возможности, что запрошенный параметр не подходит для курсора, определенного инструкцией, этот параметр служит как входными, так и выходными данными. В таких случаях SQL Server назначает соответствующий тип и изменяет это значение.
ccopt
Параметр управления параллелизмом. Параметр ccopt является необязательным. При указании для параметра ccopt требуется одно из следующих входных значений int .
| значение | Описание |
|---|---|
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 может назначить другое значение, отличное от запрошенного.
строка
Необязательный параметр, указывающий количество строк буфера получения для использования AUTO_FETCH. Значение по умолчанию составляет 20 строк. Параметр rowcount ведет себя по-разному при назначении в качестве входного значения и возвращаемого значения.
| Как входное значение | Как возвращаемое значение |
|---|---|
| При указании AUTO_FETCH с помощью FAST_FORWARD курсоров строка представляет количество строк, которые нужно поместить в буфер получения. | Представляет число строк в результирующем наборе. Если задано значение scrolloptAUTO_FETCH , строка возвращает количество строк, которые были извлекались в буфер получения. |
parameter_name
Задает одно или несколько имен параметров, определенных в параметре params . Для каждого параметра, включенного в params, должен быть указан параметр. Этот параметр не требуется, если инструкция Transact-SQL или пакетная служба в парам не имеет параметров.
Значения кода возврата
Если значение params возвращается NULL, инструкция не параметризована.
Примеры
В этом примере показано использование sp_cursorprepexec. Он выполняет запрос к Person таблице в AdventureWorks2025 базе данных, возвращая все записи, в которых имя — "Kirby".
USE AdventureWorks2022;
GO
DECLARE @prep_handle INT,
@cursor INT,
@scrollopt INT = 4104,
@ccopt INT = 8193,
@rowcnt INT;
EXECUTE 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,
'Kirby';
EXECUTE sp_cursorfetch @cursor;