sp_cursorprepexec (Transact-SQL)

S’applique à :SQL ServerAzure SQL DatabaseAzure Synapse AnalyticsAnalytics 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 valeur NULL, 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;