sp_cursorprepexec (Transact-SQL)
Aplica-se a:SQL ServerBanco de Dados SQL do AzureAzure Synapse AnalyticsPDW (Analytics Platform System)
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 é chamado especificando ID = 5
em um pacote de fluxo de dados tabular (TDS).
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. alça preparada é necessária e retorna int.
cursor
O identificador de cursor gerado pelo SQL Server. 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âmetros na instrução. Params é um parâmetro obrigatório que chama um valor de entrada nText, NCAR ou nvarchar .
Observação
Use uma cadeia de caracteres ntext como o valor de entrada quando a instrução for parametrizada e o valor de PARAMETERIZED_STMT scrollopt estiver ON.
instrução
Define o conjunto de resultados do cursor. O parâmetro statement é obrigatório e chama um valor de entrada ntext, ncar ou nvarchar .
Observação
As regras para especificar o valor da instrução são as mesmas do sp_cursoropen
, com a exceção de que o tipo de dados da cadeia de caracteres da 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 | OTIMISTA (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 no 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 de retorno.
Como valor de entrada | Como valor de retorno |
---|---|
Quando AUTO_FETCH é especificado com FAST_FORWARD a contagem de linhas dos cursores 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 params 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 onde o AdventureWorks2022
primeiro 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;
Conteúdo relacionado
Comentários
https://aka.ms/ContentUserFeedback.
Em breve: Ao longo de 2024, eliminaremos os problemas do GitHub como o mecanismo de comentários para conteúdo e o substituiremos por um novo sistema de comentários. Para obter mais informações, consulteEnviar e exibir comentários de