sp_prepare (SQL Transaksi)
Berlaku untuk: SQL Server 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
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 set hasilnya.
1
Jalankan kueri dua kali menggunakan nilai 1
handel , sebelum membuang rencana yang disiapkan.
EXEC sp_execute 1, 49879;
GO
EXEC sp_execute 1, 48766;
GO
EXEC sp_unprepare 1;
GO