Anmerkung
Der Zugriff auf diese Seite erfordert eine Genehmigung. Du kannst versuchen, dich anzumelden oder die Verzeichnisse zu wechseln.
Der Zugriff auf diese Seite erfordert eine Genehmigung. Du kannst versuchen , die Verzeichnisse 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 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. Vorbereiten und Ausführen einer Anweisung mithilfe des Handles
Im folgenden Beispiel wird eine Anweisung in der AdventureWorks2025 Datenbank vorbereitet und später mithilfe des Handles ausgeführt.
-- 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
Hier sehen Sie das Ergebnis.
1
Führen Sie die Abfrage zweimal mithilfe des Handlewerts 1aus, bevor Sie den vorbereiteten Plan verwerfen.
EXECUTE sp_execute 1, 49879;
GO
EXECUTE sp_execute 1, 48766;
GO
EXECUTE sp_unprepare 1;
GO