sp_cursorprepare (Transact-SQL)

S’applique à :SQL Server

Compile le lot ou l'instruction de curseur 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, associée à 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 de handle préparé généré par SQL Server qui retourne une valeur entière.

Notes

prepared_handle est ensuite fourni à une procédure de sp_cursorexecute afin d’ouvrir un curseur. Une fois un handle créé, il existe jusqu'à ce que vous vous déconnectiez ou que vous le supprimiez de façon explicite par le biais d'une procédure sp_cursorunprepare.

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 valeur NULL si l'instruction n'est pas paramétrable.

Notes

Utilisez une chaîne ntext comme valeur d’entrée lorsque stmt est paramétré et que la valeur scrollopt PARAMETERIZED_STMT est ACTIVÉE.

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 .

Notes

Les règles de spécification de la valeur stmt sont les mêmes que celles de sp_cursoropen, à l’exception du type de données stmt string doit être ntext.

options
Paramètre optionnel qui retourne une description des colonnes du jeu de résultats du curseur. les options nécessitent la valeur d’entrée int suivante.

Valeur Description
0x0001 RETURN_METADATA

scrollopt
Option de défilement. 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 à la fois 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 OPTIMISTE (anciennement 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 OPTIMISITC_ACCEPTABLE

Comme avec scrollpt, SQL Server pouvez affecter une valeur différente de celle demandée.

Notes

Le paramètre d'état RPC prend l'une des valeurs suivantes :

Valeur Description
0 Opération réussie
0x0001 Échec
1FF6 Impossible de retourner des 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 INSERT ou DDL.

Exemples

Voici un exemple d’utilisation de sp_cursorprepare et de 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

Lorsque stmt est paramétré et que la valeur de PARAMETERIZED_STMT scrollopt est ON, le format de la chaîne est le suivant :

{ <nom> de la variable locale**<type de> données } [ ,... n ]

Voir aussi

sp_cursorexecute (Transact-SQL)
sp_cursoropen (Transact-SQL)
sp_cursorunprepare (Transact-SQL)
Procédures stockées système (Transact-SQL)