Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Aplica-se a:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Sistema de Plataforma de Análise (PDW)
Banco de dados SQL no Microsoft Fabric
Compila um plano para a instrução de cursor ou lote enviado e, em seguida, cria e popula o cursor.
sp_cursorprepexec combina as funções de sp_cursorprepare e sp_cursorexecute. Esse procedimento é invocado especificando ID = 5 em um pacote TDS (fluxo de dados tabular).
Convenções de sintaxe de Transact-SQL
Sintaxe
sp_cursorprepexec prepared handle OUTPUT , cursor OUTPUT , params , statement , options
[ , scrollopt [ , ccopt [ , rowcount ] ] ]
[ , '@parameter_name [ , ...n ]' ]
Argumentos
Importante
Os argumentos para procedimentos armazenados estendidos devem ser inseridos na ordem específica, conforme descrito na seção sintaxe. Se os parâmetros forem inseridos fora de ordem, ocorrerá uma mensagem de erro.
Alça preparada
Um identificador de identificador preparado gerado pelo SQL Server. O parâmetro de handle preparado é necessário e retorna int.
cursor
O identificador de cursor gerado pelo SQL Server. O parâmetro do cursor é um parâmetro obrigatório que deve ser fornecido em todos os procedimentos subsequentes que atuam sobre esse cursor, por exemplo, sp_cursorfetch.
params
Identifica instruções parametrizadas. A definição de parâmetros de variáveis é substituída por marcadores de parâmetro na instrução. O parâmetro parâmetro é necessário. Quando especificado, params chama um valor de entrada ntext, nchar ou nvarchar .
Observação
Use uma cadeia de caracteres ntext como o valor de entrada quando a instrução for parametrizada e o valor do PARAMETERIZED_STMT scrollopt for ON.
instrução
Define o conjunto de resultados do cursor. O parâmetro statement é necessário e chama um valor de entrada ntext, nchar ou nvarchar .
Observação
As regras para especificar o valor da instrução são as mesmas de sp_cursoropen, com a exceção de que o tipo de dado da string da instrução deve ser ntext.
options
Um parâmetro opcional que retorna uma descrição das colunas do conjunto de resultados de cursor. O parâmetro options requer o seguinte valor de entrada int .
| Valor | Descrição |
|---|---|
0x0001 |
RETURN_METADATA |
scrollopt
Opção de rolagem. O parâmetro scrollopt é opcional. Quando especificado, o scrollopt requer um dos seguintes valores de entrada int .
| Valor | Descrição |
|---|---|
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 |
Devido à possibilidade de que a opção solicitada não seja apropriada para o cursor definido pela instrução, esse parâmetro serve como entrada e saída. Nesses casos, o SQL Server atribui um tipo apropriado e modifica esse valor.
CCOPT
Opção de controle de simultaneidade. O parâmetro ccopt é opcional. Quando especificado, o parâmetro ccopt requer um dos seguintes valores de entrada int .
| Valor | Descrição |
|---|---|
0x0001 |
READ_ONLY |
0x0002 |
SCROLL_LOCKS (anteriormente conhecido como LOCKCC) |
0x0004 |
OPTIMISTIC (anteriormente conhecido como OPTCC) |
0x0008 |
OPTIMISTIC (anteriormente conhecido como 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 |
Assim como acontece com scrollopt, o SQL Server pode atribuir um valor diferente do solicitado.
contagem de linhas
Um parâmetro opcional que indica o número de linhas de buffer de busca a serem usadas com AUTO_FETCH. O padrão é 20 linhas. O parâmetro de contagem de linhas se comporta de forma diferente quando atribuído como valor de entrada em comparação com um valor de retorno.
| Como valor de entrada | Como valor de retorno |
|---|---|
| Quando AUTO_FETCH é especificado com FAST_FORWARD cursores , a contagem de linhas representa o número de linhas a serem colocadas no buffer de busca. | Representa o número de linhas no conjunto de resultados. Quando o valor scrolloptAUTO_FETCH é especificado, a contagem de linhas retorna o número de linhas que foram buscadas no buffer de busca. |
parameter_name
Designa um ou mais nomes de parâmetros conforme definido no parâmetro de parâmetros . Deve haver um parâmetro fornecido para cada parâmetro incluído nos parâmetros. Esse parâmetro não é necessário quando a instrução Transact-SQL ou batch em parâmetros não tem parâmetros definidos.
Valores do código de retorno
Se o valor dos parâmetros retorna NULL, a instrução não é parametrizada.
Exemplos
Este exemplo demonstra o uso de sp_cursorprepexec. Ele executa uma consulta na Person tabela do AdventureWorks2025 banco de dados, retornando todos os registros cujo primeiro nome é "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;