sp_prepare (Transact-SQL)

Gilt für:SQL ServerAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics 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

Weitere Informationen

Gespeicherte Systemprozeduren (Transact-SQL)