sp_cursorprepare (Transact-SQL)
Se aplica a: SQL Server
Compila la instrucción de cursor o el lote en un plan de ejecución, pero no crea el cursor. La instrucción compilada se puede usar más adelante en sp_cursorexecute
. Este procedimiento, junto con sp_cursorexecute
, tiene la misma función que sp_cursoropen
, pero se divide en dos fases. sp_cursorprepare
se invoca especificando ID = 3
en un paquete de flujo de datos tabular (TDS).
Convenciones de sintaxis de Transact-SQL
Sintaxis
sp_cursorprepare prepared_handle OUTPUT , params , stmt , options
[ , scrollopt [ , ccopt ] ]
[ ; ]
Argumentos
prepared_handle
Identificador preparado handle
generado por SQL Server que devuelve un valor int .
prepared_handle se proporciona a continuación a un sp_cursorexecute
procedimiento para abrir un cursor. Una vez creado un identificador, existe hasta que se cierra la sesión o hasta que se quita explícitamente a través de un sp_cursorunprepare
procedimiento.
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 . Escriba un NULL
valor si la instrucción no está parametrizada.
Use una cadena ntext como valor de entrada cuando stmt está parametrizado y el valor de scrollopt PARAMETERIZED_STMT es ON.
stmt
Define el conjunto de resultados del cursor. El parámetro stmt es necesario y llama a un valor de entrada ntext, **nchar o nvarchar .
Las reglas para especificar el valor stmt son las mismas sp_cursoropen
que , con la excepción de que el tipo de datos de cadena stmt debe ser ntext.
options
Devuelve una descripción de las columnas del conjunto de resultados del cursor. El parámetro options es int, con un valor predeterminado de NULL
. Cuando se establece en 0x0001
, significa RETURN_METADATA
.
scrollopt
Opción de desplazamiento. El parámetro 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 |
Dado que es posible que el valor solicitado no sea adecuado para el cursor definido por stmt, este parámetro actúa como entrada y salida. En casos como este, SQL Server asigna un valor adecuado.
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 (anteriormente conocido como LOCKCC ) |
0x0004 |
OPTIMISTIC (anteriormente conocido como OPTCC ) |
0x0008 |
OPTIMISTIC (anteriormente conocido 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 |
OPTIMISTIC_ACCEPTABLE |
Al igual que con scrollpt, SQL Server puede asignar un valor diferente del solicitado.
Comentarios
El parámetro de estado RPC es uno de los siguientes valores:
Valor | Descripción |
---|---|
0 |
Correcto |
0x0001 |
Error |
1FF6 |
No se pudieron devolver metadatos. Nota: El motivo de esto es que la instrucción no genera un conjunto de resultados; por ejemplo, es una INSERT instrucción O DDL. |
Ejemplos
El código siguiente es un ejemplo de uso sp_cursorprepare
de y sp_cursorexecute
:
DECLARE @handle INT, @p5 INT, @p6 INT;
EXEC sp_cursorprepare @handle OUTPUT,
N'@dbid int',
N'select * from sys.databases where database_id < @dbid',
1,
@p5 OUTPUT,
@p6 OUTPUT;
DECLARE @p1 INT
SET @P1 = @handle;
DECLARE @p2 INT;
DECLARE @p3 INT;
DECLARE @p4 INT;
SET @P6 = 4;
EXEC sp_cursorexecute @p1,
@p2 OUTPUT,
@p3 OUTPUT,
@p4 OUTPUT,
@p5 OUTPUT,
@p6;
EXEC sp_cursorfetch @P2;
EXEC sp_cursorunprepare @handle;
EXEC sp_cursorclose @p2;
Cuando stmt está parametrizado y el valor scrollopt PARAMETERIZED_STMT
es ON
, el formato de la cadena tiene el formato siguiente:
<parameter_name> <data_type> [ ,... n ]