Aracılığıyla paylaş


sp_prepare (Transact SQL)

Şunlar için geçerlidir:SQL ServerAzure SQL Managed InstanceAzure Synapse AnalyticsAnalitik Platform Sistemi (PDW)

Parametreli bir Transact-SQL ifadesi hazırlar ve çalıştırmak için bir ifade tutamacı döndürür. sp_prepare tablolu veri akışı (TDS) paketinde belirtilerek ID = 11 çağrılır.

Transact-SQL söz dizimi kuralları

Sözdizimi

sp_prepare
    handle OUTPUT
    , params
    , stmt
    , options
[ ; ]

Arguments

kulp

SQL Server tarafından oluşturulan hazırlanmış bir handle tanımlayıcısı. handle (tutamak ) int dönüş değeri olan gerekli bir parametredir.

parametreler

Parametreli deyimleri tanımlar. params , ntext, nchar veya nvarchar giriş değeri gerektiren gerekli bir OUTPUT parametresidir. değişkenlerin parametreleri deyimindeki parametre işaretçileri ile değiştirilir. Eğer ifade parametrelendirilmemişse bir NULL değer girin.

STMT

İmleç sonuç kümesini tanımlar. Stmt parametresi gereklidir ve ntext, nchar veya nvarchar giriş değeri çağrır.

Seçenekler

İmleç sonuç kümesi sütunlarının açıklamasını döndüren isteğe bağlı bir parametre. seçenekler aşağıdaki giriş değerini gerektirir:

Değer Description
0x0001 RETURN_METADATA

Örnekler

A. Bir ifade hazırlayın ve yürütün

Aşağıdaki örnek, temel bir Transact-SQL ifadesi hazırlayır ve yürütür.

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. Bir ifadeyi şu tutmayı kullanarak hazırlayın ve çalıştırın

Aşağıdaki örnek, veritabanında AdventureWorks2025 bir ifade hazırlar ve daha sonra bu ifadeyi tutamacı kullanarak çalıştırır.

-- 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

Sonuç kümesi aşağıdadır.

1

Hazırlanan planı atmadan önce sorguyu handle değerini 1kullanarak iki kez çalıştırın.

EXECUTE sp_execute 1, 49879;
GO

EXECUTE sp_execute 1, 48766;
GO

EXECUTE sp_unprepare 1;
GO