sp_cursorprepare (Transact-SQL)
S’applique à : SQL Server
Compile l’instruction de curseur ou le lot dans un plan d’exécution, mais ne crée pas le curseur. L’instruction compilée peut être utilisée ultérieurement par sp_cursorexecute
. Cette procédure, couplée avec sp_cursorexecute
, a la même fonction que sp_cursoropen
, mais est divisée en deux phases. sp_cursorprepare
est appelé en spécifiant ID = 3
dans un paquet TDS (Tabular Data Stream).
Conventions de la syntaxe Transact-SQL
Syntaxe
sp_cursorprepare prepared_handle OUTPUT , params , stmt , options
[ , scrollopt [ , ccopt ] ]
[ ; ]
Arguments
prepared_handle
Identificateur préparé généré handle
par SQL Server qui retourne une valeur int .
prepared_handle est ensuite fournie à une sp_cursorexecute
procédure pour ouvrir un curseur. Une fois qu’un handle est créé, il existe jusqu’à ce que vous vous déconnectez, ou jusqu’à ce que vous le supprimiez explicitement par le biais d’une sp_cursorunprepare
procédure.
params
Identifie des instructions paramétrables. La définition params des variables est remplacée par les marqueurs de paramètres dans l’instruction. params est un paramètre obligatoire qui appelle une valeur d’entrée ntext, nchar ou nvarchar . Entrez une NULL
valeur si l’instruction n’est pas paramétrée.
Utilisez une chaîne ntext comme valeur d’entrée lorsque stmt est paramétré et que la valeur de défilement PARAMETERIZED_STMT est ON.
stmt
Définit le jeu de résultats de curseur. Le paramètre stmt est requis et appelle une valeur d’entrée ntext, **nchar ou nvarchar .
Les règles de spécification de la valeur stmt sont les mêmes que sp_cursoropen
, à l’exception que le type de données de chaîne stmt doit être ntext.
options
Retourne une description des colonnes du jeu de résultats du curseur. Le paramètre d’options est int, avec la valeur par défaut NULL
. Lorsqu’il est défini sur 0x0001
, cela signifie RETURN_METADATA
.
scrollopt
Option de défilement. Le paramètre scrollopt est un paramètre facultatif qui nécessite l’une des valeurs d’entrée int suivantes.
Valeur | Description |
---|---|
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 |
Étant donné que la valeur demandée peut ne pas convenir au curseur défini par stmt, ce paramètre sert d’entrée et de sortie. Dans de tels cas, SQL Server affecte une valeur appropriée.
ccopt
Option de contrôle en matière d'accès concurrentiel. ccopt est un paramètre facultatif qui nécessite l’une des valeurs d’entrée int suivantes.
Valeur | Description |
---|---|
0x0001 |
READ_ONLY |
0x0002 |
SCROLL_LOCKS (précédemment appelé LOCKCC ) |
0x0004 |
OPTIMISTIC (précédemment appelé OPTCC ) |
0x0008 |
OPTIMISTIC (précédemment appelé 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 |
Comme avec le défilement, SQL Server peut affecter une valeur différente de celle demandée.
Notes
Le paramètre d’état RPC est l’une des valeurs suivantes :
Valeur | Description |
---|---|
0 |
Succès |
0x0001 |
Échec |
1FF6 |
Impossible de retourner les métadonnées. Remarque : La raison en est que l’instruction ne produit pas de jeu de résultats ; par exemple, il s’agit d’une instruction DDL ou d’une INSERT instruction. |
Exemples
Le code suivant est un exemple d’utilisation sp_cursorprepare
et sp_cursorexecute
de :
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;
Lorsque stmt est paramétré et que la valeur scrollopt PARAMETERIZED_STMT
est ON
, le format de la chaîne se présente sous la forme suivante :
<parameter_name> <data_type> [ ,... n ]