sp_prepare (SQL Transaksi)

Berlaku untuk:SQL ServerAzure SQL Managed InstanceAzure Synapse Analytics AnalyticsPlatform System (PDW)

Menyiapkan pernyataan Transact-SQL berparameter dan mengembalikan handel pernyataan untuk eksekusi. sp_prepare dipanggil dengan menentukan ID = 11 dalam paket aliran data tabular (TDS).

Konvensi sintaks transact-SQL

Sintaks

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

Argumen

Menangani

Pengidentifikasi handel yang dihasilkan SQL Server. handle adalah parameter yang diperlukan dengan nilai pengembalian int .

params

Mengidentifikasi pernyataan berparameter. param adalah parameter OUTPUT yang diperlukan yang memanggil nilai input ntext, nchar, atau nvarchar . Definisi param variabel digantikan untuk penanda parameter dalam pernyataan. NULL Masukkan nilai jika pernyataan tidak diparameterkan.

stmt

Menentukan kumpulan hasil kursor. Parameter stmt diperlukan dan memanggil nilai input ntext, nchar, atau nvarchar .

opsi

Parameter opsional yang mengembalikan deskripsi kolom kumpulan hasil kursor. opsi memerlukan nilai input berikut:

Nilai Deskripsi
0x0001 RETURN_METADATA

Contoh

J. Menyiapkan dan menjalankan pernyataan

Contoh berikut menyiapkan dan menjalankan pernyataan Transact-SQL dasar.

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. Menyiapkan dan menjalankan pernyataan menggunakan handel

Contoh berikut menyiapkan pernyataan dalam AdventureWorks2022 database, dan kemudian menjalankannya menggunakan handel.

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

Berikut adalah hasil yang ditetapkan.

1

Jalankan kueri dua kali menggunakan nilai 1handel , sebelum membuang rencana yang disiapkan.

EXEC sp_execute 1, 49879;
GO

EXEC sp_execute 1, 48766;
GO

EXEC sp_unprepare 1;
GO