sp_prepare (Transact-SQL)
Gilt für:SQL Server
Azure SQL Managed Instance
Azure Synapse Analytics
Analytics Platform System (PDW)
Bereitet eine parametrisierte Transact-SQL-Anweisung vor und gibt ein Anweisungshandle für die Ausführung zurück. sp_prepare
wird aufgerufen, indem id = 11 in einem TDS-Paket (Tabular Data Stream) angegeben wird.
Transact-SQL-Syntaxkonventionen
Syntax
sp_prepare handle OUTPUT, params, stmt, options
Argumente
Behandeln
Ist ein SQL Server generierter vorbereiteter Handlebezeichner. handle ist ein erforderlicher Parameter mit einem int -Rückgabewert.
params
Identifiziert parametrisierte Anweisungen. Die params -Definition der Variablen wird in der Anweisung an die Stelle der Parametermarkierungen gesetzt. params ist ein erforderlicher Parameter, der einen Eingabewert vom Typ ntext, nchar,oder nvarchar erfordert. Geben Sie einen NULL-Wert ein, wenn die Anweisung nicht parametrisiert ist.
Stmt
Definiert das Resultset des Cursors. Der stmt-Parameter ist erforderlich und ruft einen ntext-, nchar- oder nvarchar-Eingabewert auf.
options
Ein optionaler Parameter, der eine Beschreibung der Spalten im Cursorresultset zurückgibt. options erfordert den folgenden int-Eingabewert:
Wert | BESCHREIBUNG |
---|---|
0x0001 | RETURN_METADATA |
Beispiele
A. Im folgenden Beispiel wird eine einfache Anweisung vorbereitet und ausgeführt.
DECLARE @P1 INT;
EXEC sp_prepare @P1 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 @P1, N'tempdb', N'ONLINE';
EXEC sp_unprepare @P1;
B. Im folgenden Beispiel wird eine Anweisung in der AdventureWorks2016-Datenbank vorbereitet und später mithilfe des Handles ausgeführt.
-- Prepare query
DECLARE @P1 INT;
EXEC sp_prepare @P1 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 @P1;
GO
Hier ist das Resultset.
-----------
1
(1 row affected)
Anschließend führt die Anwendung die Abfrage zweimal mithilfe des Handle-Werts 1 aus, bevor der vorbereitete Plan verworfen wird.
EXEC sp_execute 1, 49879;
GO
EXEC sp_execute 1, 48766;
GO
EXEC sp_unprepare 1;
GO