Partage via


sp_prepare (Transact SQL)

S’applique à : SQL Server Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW)

Prépare une instruction Transact-SQL paramétrée et retourne un handle d’instruction pour l’exécution. sp_prepare est appelé en spécifiant ID = 11 dans un paquet TDS (Tabular Data Stream).

Conventions de la syntaxe Transact-SQL

Syntaxe

sp_prepare
    handle OUTPUT
    , params
    , stmt
    , options
[ ; ]

Arguments

descripteur

Identificateur de handle préparé généré par SQL Server. handle est un paramètre obligatoire avec une valeur de retour int .

params

Identifie des instructions paramétrables. params est un paramètre OUTPUT requis qui appelle une valeur d’entrée ntext, nchar ou nvarchar . La définition params des variables est remplacée par les marqueurs de paramètres dans l’instruction. Entrez une NULL valeur si l’instruction n’est pas paramétré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 .

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 suivante :

Valeur Description
0x0001 RETURN_METADATA

Exemples

R. Préparer et exécuter une instruction

L’exemple suivant prépare et exécute une instruction Transact-SQL de base.

DECLARE @handle INT;

EXEC sp_prepare @handle OUTPUT,
    N'@P1 NVARCHAR(128), @P2 NVARCHAR(100)',
    N'SELECT database_id, name FROM sys.databases WHERE name=@P1 AND state_desc = @P2';

EXEC sp_execute @handle,
    N'tempdb',
    N'ONLINE';

EXEC sp_unprepare @handle;

B. Préparer et exécuter une instruction à l’aide du handle

L’exemple suivant prépare une instruction dans la AdventureWorks2022 base de données, puis l’exécute ultérieurement à l’aide du handle.

-- Prepare query
DECLARE @handle INT;

EXEC sp_prepare @handle OUTPUT,
    N'@Param INT',
    N'SELECT *
FROM Sales.SalesOrderDetail AS sod
INNER JOIN Production.Product AS p ON sod.ProductID = p.ProductID
WHERE SalesOrderID = @Param
ORDER BY Style DESC;';

-- Return handle for calling application
SELECT @handle;
GO

Voici le jeu de résultats.

1

Exécutez la requête deux fois à l’aide de la valeur 1de handle avant d’ignorer le plan préparé.

EXEC sp_execute 1, 49879;
GO

EXEC sp_execute 1, 48766;
GO

EXEC sp_unprepare 1;
GO