sp_cursorprepexec (Transact-SQL)
S’applique à : SQL Server Azure SQL Database Azure Synapse Analytics Analytics Platform System (PDW)
Compile un plan pour le lot ou l'instruction de curseur envoyé, puis crée et remplit le curseur. sp_cursorprepexec
combine les fonctions de sp_cursorprepare
et sp_cursorexecute
. Cette procédure est appelée en spécifiant ID = 5
dans un paquet TDS (Tabular Data Stream).
Conventions de la syntaxe Transact-SQL
Syntaxe
sp_cursorprepexec prepared handle OUTPUT , cursor OUTPUT , params , statement , options
[ , scrollopt [ , ccopt [ , rowcount ] ] ]
[ , '@parameter_name [ , ...n ]' ]
Arguments
handle préparé
Identificateur de handle préparé généré par SQL Server. handle préparé est requis et retourne int.
cursor
Identificateur de curseur généré par SQL Server. le curseur est un paramètre obligatoire qui doit être fourni sur toutes les procédures suivantes qui agissent sur ce curseur, par exemple sp_cursorfetch
.
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 .
Remarque
Utilisez une chaîne ntext comme valeur d’entrée lorsque l’instruction est paramétrée et la valeur de défilement PARAMETERIZED_STMT est ON.
instruction
Définit le jeu de résultats de curseur. Le paramètre d’instruction est requis et appelle une valeur d’entrée ntext, nchar ou nvarchar .
Remarque
Les règles de spécification de la valeur d’instruction sont identiques à celles pour sp_cursoropen
, à l’exception que le type de données de chaîne d’instruction 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 |
En raison de la possibilité que l’option demandée ne soit pas appropriée pour le curseur défini par l’instruction, ce paramètre sert à la fois d’entrée et de sortie. Dans ce cas, SQL Server affecte un type approprié et modifie cette valeur.
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 (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 |
OPTIMISITC_ACCEPTABLE |
Comme avec scrollopt, SQL Server peut affecter une valeur différente de celle demandée.
rowcount
Paramètre facultatif qui indique le nombre de lignes de mémoire tampon d’extraction à utiliser avec AUTO_FETCH. La valeur par défaut est de 20 lignes. rowcount se comporte différemment lorsqu’il est affecté en tant que valeur d’entrée par rapport à une valeur de retour.
Comme une valeur d'entrée | Comme une valeur de retour |
---|---|
Lorsque AUTO_FETCH est spécifié avec FAST_FORWARD nombre de lignes de curseurs représente le nombre de lignes à placer dans la mémoire tampon d’extraction. | Représente le nombre de lignes dans le jeu de résultats. Lorsque la valeur de défilement AUTO_FETCH est spécifiée, le nombre de lignes retourne le nombre de lignes extraites dans la mémoire tampon d’extraction. |
parameter_name
Désigne un ou plusieurs noms de paramètres tels que définis dans l’argument params . Il doit y avoir un paramètre fourni pour chaque paramètre inclus dans les paramètres. Cet argument n’est pas obligatoire lorsque l’instruction Transact-SQL ou le lot dans params n’a aucun paramètre défini.
Valeurs des codes de retour
Si params retourne une NULL
valeur, l’instruction n’est pas paramétrée.
Exemples
Cet exemple illustre l’utilisation de sp_cursorprepexec
. Il exécute une requête sur la Person
table de la AdventureWorks2022
base de données qui retourne tous les enregistrements où le prénom est « 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;