Note
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier les répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de changer de répertoire.
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 AS INT;
EXECUTE 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';
EXECUTE sp_execute
@handle,
N'tempdb', N'ONLINE';
EXECUTE sp_unprepare @handle;
B. Préparer et exécuter une instruction à l’aide du handle
L’exemple suivant prépare une instruction dans la AdventureWorks2025 base de données, puis l’exécute ultérieurement à l’aide du handle.
-- Prepare query
DECLARE @handle AS INT;
EXECUTE 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é.
EXECUTE sp_execute 1, 49879;
GO
EXECUTE sp_execute 1, 48766;
GO
EXECUTE sp_unprepare 1;
GO