Partilhar via


sp_cursorprepexec (Transact-SQL)

Aplica-se a:Banco de Dados SQL doAzureInstância Gerenciada de SQL do AzureAzure Synapse AnalyticsAnalytics Platform System (PDW)Banco de Dados SQL no Microsoft Fabric

Compila um plano para a instrução ou lote de cursor enviado e, em seguida, cria e preenche o cursor. sp_cursorprepexec combina as funções de sp_cursorprepare e sp_cursorexecute. Este procedimento é invocado especificando ID = 5 em um pacote de fluxo de dados tabular (TDS).

Transact-SQL convenções de sintaxe

Sintaxe

sp_cursorprepexec prepared handle OUTPUT , cursor OUTPUT , params , statement , options
    [ , scrollopt [ , ccopt [ , rowcount ] ] ]
    [ , '@parameter_name [ , ...n ]' ]

Arguments

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.

pega preparada

Um identificador de identificador preparado gerado pelo SQL Server. O parâmetro handle preparado é necessário e retorna int.

Cursor

O identificador de cursor gerado pelo SQL Server. O parâmetro cursor é um parâmetro obrigatório que deve ser fornecido em todos os procedimentos subsequentes que atuam sobre este 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 declaração. O parâmetro params é obrigató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 da PARAMETERIZED_STMT scrollopt estiver ON.

Declaraçã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 sp_cursoropen, com a exceção de que o tipo de dados da cadeia de caracteres da instrução deve ser ntext.

Opções

Um parâmetro opcional que retorna uma descrição das colunas do conjunto de resultados do cursor. O parâmetro options requer o seguinte valor de entrada int .

Valor Description
0x0001 RETURN_METADATA

scrollopt

Opção de rolagem. O parâmetro scrollopt é opcional. Quando especificado, scrollopt requer um dos seguintes valores de entrada int .

Valor Description
0x0001 CONJUNTO DE CHAVES
0x0002 DINÂMICA
0x0004 FORWARD_ONLY
0x0008 ESTÁTICA
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 Description
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_FETCHo . O padrão é 20 linhas. O parâmetro 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 contagem de linhas de 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 scrolloptAUTO_FETCH é 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 parâmetro params . Deve ser fornecido um parâmetro para cada parâmetro incluído nos parâmetros. Este parâmetro não é necessário quando a instrução Transact-SQL ou lote em parâmetros não tem parâmetros definidos.

Valores de código de retorno

Se o valor de params retornar NULL, a instrução não será parametrizada.

Examples

Este exemplo demonstra o uso do sp_cursorprepexec. Ele executa uma consulta na Person tabela no banco de dados retornando todos os registros onde o AdventureWorks2025 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;