Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Gilt für: SQL Server
Azure SQL verwaltete Instanz
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 in einem TDS-Paket (Tabular Data Stream) angegeben ID = 11
wird.
Transact-SQL-Syntaxkonventionen
Syntax
sp_prepare
handle OUTPUT
, params
, stmt
, options
[ ; ]
Argumente
Handle
Ein vom SQL Server generierter , vorbereiteter Handlebezeichner . handle ist ein erforderlicher Parameter mit einem int -Rückgabewert.
params
Identifiziert parametrisierte Anweisungen. params ist ein erforderlicher OUTPUT-Parameter, der einen ntext-, nchar- oder nvarchar-Eingabewert aufruft. Die params -Definition der Variablen wird in der Anweisung an die Stelle der Parametermarkierungen gesetzt. Geben Sie einen Wert ein NULL
, 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.
Optionen
Ein optionaler Parameter, der eine Beschreibung der Spalten im Cursorresultset zurückgibt. für optionen ist der folgende Eingabewert erforderlich:
Wert | Beschreibung |
---|---|
0x0001 |
RETURN_METADATA |
Beispiele
A. Vorbereiten und Ausführen einer Anweisung
Im folgenden Beispiel wird eine einfache Transact-SQL-Anweisung vorbereitet und ausgeführt.
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. Vorbereiten und Ausführen einer Anweisung mithilfe des Handles
Im folgenden Beispiel wird eine Anweisung in der AdventureWorks2022
Datenbank vorbereitet und später mithilfe des Handles ausgeführt.
-- 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
Hier sehen Sie das Ergebnis.
1
Führen Sie die Abfrage zweimal mithilfe des Handlewerts 1
aus, bevor Sie den vorbereiteten Plan verwerfen.
EXEC sp_execute 1, 49879;
GO
EXEC sp_execute 1, 48766;
GO
EXEC sp_unprepare 1;
GO