Udostępnij za pomocą


sp_prepare (Transact SQL)

Dotyczy do:SQL ServerAzure SQL Managed InstanceAzure Synapse AnalyticsSystem 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