sp_cursorprepexec (Transact-SQL)
Se aplica a: SQL Server Azure SQL Database Azure Synapse Analytics Analytics Platform System (PDW)
Compila un plan para la instrucción de cursor enviada o lote. Después, crea y rellena el cursor. sp_cursorprepexec
combina las funciones de sp_cursorprepare
y sp_cursorexecute
. Este procedimiento se invoca especificando ID = 5
en un paquete de flujo de datos tabular (TDS).
Convenciones de sintaxis de Transact-SQL
Sintaxis
sp_cursorprepexec prepared handle OUTPUT , cursor OUTPUT , params , statement , options
[ , scrollopt [ , ccopt [ , rowcount ] ] ]
[ , '@parameter_name [ , ...n ]' ]
Argumentos
identificador preparado
Identificador de identificador de identificador preparado generado por SQL Server. Se requiere el identificador preparado y devuelve int.
cursor
Identificador de cursor generado por SQL Server. cursor es un parámetro necesario que se debe proporcionar en todos los procedimientos posteriores que actúan sobre este cursor, por ejemplo, sp_cursorfetch
.
params
Identifica instrucciones con parámetros. La definición de parámetros de las variables se sustituye por los marcadores de parámetro en la instrucción . los parámetros son un parámetro necesario que llama a un valor de entrada ntext, nchar o nvarchar .
Nota:
Use una cadena ntext como valor de entrada cuando la instrucción está parametrizada y el valor de scrollopt PARAMETERIZED_STMT es ON.
instrucción
Define el conjunto de resultados del cursor. El parámetro de instrucción es obligatorio y llama a un valor de entrada ntext, nchar o nvarchar .
Nota:
Las reglas para especificar el valor de instrucción son las mismas que para sp_cursoropen
, con la excepción de que el tipo de datos de cadena de instrucción debe ser ntext.
options
Parámetro opcional que devuelve una descripción de las columnas del conjunto de resultados del cursor. Las opciones requieren el siguiente valor de entrada int .
Valor | Descripción |
---|---|
0x0001 |
RETURN_METADATA |
scrollopt
Opción de desplazamiento. scrollopt es un parámetro opcional que requiere uno de los siguientes valores de entrada int .
Valor | Descripción |
---|---|
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 |
Debido a la posibilidad de que la opción solicitada no sea adecuada para el cursor definido por instrucción, este parámetro actúa como entrada y salida. En tales casos, SQL Server asigna un tipo adecuado y modifica este valor.
ccopt
Opción de control de simultaneidad. ccopt es un parámetro opcional que requiere uno de los siguientes valores de entrada int .
Valor | Descripción |
---|---|
0x0001 |
READ_ONLY |
0x0002 |
SCROLL_LOCKS (conocido anteriormente como LOCKCC) |
0x0004 |
OPTIMISTA (anteriormente conocido como OPTCC) |
0x0008 |
OPTIMISTIC (conocido anteriormente 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 |
Al igual que con scrollopt, SQL Server puede asignar un valor diferente al solicitado.
rowcount
Parámetro opcional que indica el número de filas del búfer de captura que se van a usar con AUTO_FETCH. El valor predeterminado es 20 filas. rowcount se comporta de forma diferente cuando se asigna como un valor de entrada frente a un valor devuelto.
Como valor de entrada | Como valor devuelto |
---|---|
Cuando se especifica AUTO_FETCH con FAST_FORWARD recuento de filas de cursores representa el número de filas que se van a colocar en el búfer de captura. | Representa el número de filas en el conjunto de resultados. Cuando se especifica el valor scrollopt AUTO_FETCH, rowcount devuelve el número de filas que se capturaron en el búfer de captura. |
parameter_name
Designa uno o varios nombres de parámetro como se define en el argumento params . Debe haber un parámetro proporcionado para cada parámetro incluido en los parámetros. Este argumento no es necesario cuando la instrucción Transact-SQL o el lote en parámetros no tiene ningún parámetro definido.
Valores de código de retorno
Si los parámetros devuelven un NULL
valor, la instrucción no está parametrizada.
Ejemplos
En este ejemplo se muestra el uso de sp_cursorprepexec
. Ejecuta una consulta en la Person
tabla de la AdventureWorks2022
base de datos que devuelve todos los registros donde el nombre es "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;