Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Aplica a:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Sistema de Plataforma de Analítica (PDW)
Base de datos SQL en Microsoft Fabric
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
Importante
Los argumentos para los procedimientos almacenados extendidos deben especificarse en el orden específico, tal como se describe en la sección sintaxis de . Si los parámetros se escriben fuera de orden, se produce un mensaje de error.
identificador preparado
Identificador de identificador de identificador preparado generado por SQL Server. El parámetro handle preparado es necesario y devuelve int.
cursor
Identificador de cursor generado por SQL Server. El parámetro 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 . Se requiere el parámetro params . Cuando se especifica, los parámetros llaman 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 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. El parámetro options requiere el siguiente valor de entrada int .
| Valor | Descripción |
|---|---|
0x0001 |
RETURN_METADATA |
scrollopt
Opción de desplazamiento. El parámetro scrollopt es opcional. Cuando se especifica, scrollopt 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. El parámetro ccopt es opcional. Cuando se especifica, el parámetro ccopt 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. El parámetro 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 scrolloptAUTO_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 parámetro params . Debe haber un parámetro proporcionado para cada parámetro incluido en los parámetros. Este parámetro 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 el valor de los parámetros devuelve NULL, 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 AdventureWorks2025 base de datos que devuelve todos los registros donde el nombre es "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;