Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dotyczy do:SQL Server
Azure SQL Managed Instance
Azure Synapse Analytics
System Platform Analitycznych (PDW)
Przygotowuje parametryzowane Transact-SQL polecenie i zwraca uchwyt instrukcji do wykonania.
sp_prepare jest wywoływany przez określenie ID = 11 pakietu strumienia danych tabelarowych (TDS).
Transact-SQL konwencje składni
Składnia
sp_prepare
handle OUTPUT
, params
, stmt
, options
[ ; ]
Arguments
uchwyt
Identyfikator uchwytu przygotowanego przez SQL Server wygenerowany przez SQL Server. Handle jest wymaganym parametrem o wartości zwrotnej int .
params
Identyfikuje sparametryzowane instrukcje.
params to wymagany parametr OUTPUT, który wymaga wartości wejściowej ntext, nchar lub nvarchar . Parametry definicji zmiennych są zastępowane znacznikami parametrów w instrukcji . Wprowadź wartość NULL , jeśli polecenie nie jest parametryzowane.
STMT
Definiuje zestaw wyników kursora. Wymagany jest parametr stmt i wymaga wartości wejściowej ntext, nchar lub nvarchar .
Opcje
Opcjonalny parametr, który zwraca opis kolumn zestawu wyników kursora. opcje wymagają następującej wartości wejściowej:
| Wartość | Description |
|---|---|
0x0001 |
RETURN_METADATA |
Przykłady
A. Przygotuj i wykonaj oświadczenie
Poniższy przykład przygotowuje i wykonuje podstawowe zdanie Transact-SQL.
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. Przygotuj i wykonaj polecenie za pomocą uchwytu
Poniższy przykład przygotowuje w bazie AdventureWorks2025 danych zaświadczenie, a następnie wykonuje je za pomocą uchwytu.
-- 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
Oto zestaw wyników.
1
Wykonaj zapytanie dwukrotnie, używając wartości 1uchwytu , przed odrzuceniem przygotowanego planu.
EXECUTE sp_execute 1, 49879;
GO
EXECUTE sp_execute 1, 48766;
GO
EXECUTE sp_unprepare 1;
GO