sp_prepare (SQL Transaksi)
Berlaku untuk:
SQL Server (semua versi yang didukung)
Azure SQL Managed Instance
Azure Synapse Analytics Analytics
Platform 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).
Sintaks
sp_prepare handle OUTPUT, params, stmt, options
Argumen
menangani
Adalah pengidentifikasi handel yang disiapkan yang dihasilkan SQL Server. handel adalah parameter yang diperlukan dengan nilai pengembalian int .
params
Mengidentifikasi pernyataan berparameter. Definisi param variabel diganti dengan penanda parameter dalam pernyataan . params adalah parameter yang diperlukan yang memanggil nilai input ntext, nchar, atau nvarchar . Masukkan nilai NULL 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 int berikut:
| Nilai | Deskripsi |
|---|---|
| 0x0001 | RETURN_METADATA |
Contoh
A. Contoh berikut menyiapkan dan menjalankan pernyataan sederhana.
DECLARE @P1 INT;
EXEC sp_prepare @P1 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 @P1, N'tempdb', N'ONLINE';
EXEC sp_unprepare @P1;
B. Contoh berikut menyiapkan pernyataan dalam database AdventureWorks2016, dan kemudian menjalankannya menggunakan handel.
-- Prepare query
DECLARE @P1 INT;
EXEC sp_prepare @P1 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 @P1;
GO
Berikut adalah hasil yang ditetapkan.
-----------
1
(1 row affected)
Kemudian aplikasi menjalankan kueri dua kali menggunakan nilai handel 1, sebelum membuang rencana yang disiapkan.
EXEC sp_execute 1, 49879;
GO
EXEC sp_execute 1, 48766;
GO
EXEC sp_unprepare 1;
GO
