sp_cursorprepexec (Transact-SQL)
Aplica-se a: SQL Server
Banco de Dados
SQL do Azure Azure Synapse Analytics
Analytics Platform System (PDW)
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
Alça preparada
Um identificador de identificador preparado gerado pelo SQL Server. O identificador preparado é necessário e retorna int.
cursor
O identificador de cursor gerado pelo SQL Server. cursor é um parâmetro necessá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. params é um parâmetro necessário que 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 que as de sp_cursoropen
, com a exceção de que o tipo de dados de cadeia de caracteres de instrução deve ser ntext.
options
Um parâmetro opcional que retorna uma descrição das colunas do conjunto de resultados de cursor. As opções exigem o seguinte valor de entrada int .
Valor | Descrição |
---|---|
0x0001 | RETURN_METADATA |
scrollopt
Opção de rolagem. scrollopt é um parâmetro opcional que 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. ccopt é um parâmetro opcional que 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 significa o número de linhas de buffer de busca a serem usadas com AUTO_FETCH. O padrão é 20 linhas. rowcount se comporta de forma diferente quando atribuído como um valor de entrada versus um valor retornado.
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 de AUTO_FETCH scrollopt é especificado, rowcount 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 argumento params . Deve haver um parâmetro fornecido para cada parâmetro incluído nos parâmetros. Esse argumento não é necessário quando a instrução Transact-SQL ou o lote em parâmetros não tem parâmetros definidos.
Valores do código de retorno
Se params retornar um valor NULL, a instrução não será parametrizada.
Exemplos
Este exemplo demonstra o uso de sp_cursorprepexec
. Ele executa uma consulta na Person
tabela no banco de dados retornando todos os registros em que o AdventureWorks2022
nome é "Katherine".
USE AdventureWorks2022;
GO
DECLARE @prep_handle INT,
@cursor INT,
@scrollopt INT = 4104,
@ccopt INT = 8193,
@rowcnt INT;
EXEC 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,
'Katherine';
EXEC sp_cursorfetch @cursor;