Compartilhar via


sp_cursorprepexec (Transact-SQL)

Aplica-se a:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsSistema 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;