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 1
de 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