sp_get_query_template (T-SQL)
Berlaku untuk:SQL Server
Mengembalikan formulir kueri berparameter. Hasilnya mengembalikan mimic formulir parameter kueri yang dihasilkan dari menggunakan parameterisasi paksa. sp_get_query_template digunakan terutama saat Anda membuat panduan paket TEMPLAT.
Sintaks
sp_get_query_template
[ @querytext = ] N'query_text'
, @templatetext OUTPUT
, @parameters OUTPUT
Argumen
'query_text'
Adalah kueri yang versi parameternya akan dibuat. 'query_text' harus diapit dalam tanda kutip tunggal dan didahului oleh penentu N Unicode. N'query_text' adalah nilai yang ditetapkan ke @querytext parameter . Ini berjenis nvarchar(max).
@templatetext
Adalah parameter output jenis nvarchar(max), yang disediakan seperti yang ditunjukkan, untuk menerima bentuk parameter query_text sebagai string literal.
@parameters
Adalah parameter output jenis nvarchar(max), yang disediakan seperti yang ditunjukkan, untuk menerima string literal nama parameter dan jenis data yang telah diparameterkan dalam @templatetext.
Keterangan
sp_get_query_template mengembalikan kesalahan saat hal berikut ini terjadi:
Ini tidak membuat parameter nilai harfiah konstanta dalam query_text.
query_text NULL, bukan string Unicode, secara sintetis tidak valid, atau tidak dapat dikompilasi.
Jika sp_get_query_template mengembalikan kesalahan, itu tidak mengubah nilai @templatetext parameter output dan @parameters .
Izin
Memerlukan keanggotaan dalam peran database publik.
Contoh
Contoh berikut mengembalikan bentuk kueri berparameter yang berisi dua nilai literal konstanta.
USE AdventureWorks2022;
GO
DECLARE @my_templatetext nvarchar(max)
DECLARE @my_parameters nvarchar(max)
EXEC sp_get_query_template
N'SELECT pi.ProductID, SUM(pi.Quantity) AS Total
FROM Production.ProductModel pm
INNER JOIN Production.ProductInventory pi
ON pm.ProductModelID = pi.ProductID
WHERE pi.ProductID = 2
GROUP BY pi.ProductID, pi.Quantity
HAVING SUM(pi.Quantity) > 400',
@my_templatetext OUTPUT,
@my_parameters OUTPUT;
SELECT @my_templatetext;
SELECT @my_parameters;
Berikut adalah hasil @my_templatetext``OUTPUT
parameter parameter:
select pi . ProductID , SUM ( pi . Quantity ) as Total
from Production . ProductModel pm
inner join Production . ProductInventory pi
on pm . ProductModelID = pi . ProductID
where pi . ProductID = @0
group by pi . ProductID , pi . Quantity
having SUM ( pi . Quantity ) > 400
Perhatikan bahwa konstanta pertama harfiah, 2
, dikonversi menjadi parameter. Literal kedua, 400
, tidak dikonversi karena berada di dalam HAVING
klausul. Hasil yang dikembalikan oleh sp_get_query_template menipu bentuk kueri yang diparameterkan saat opsi PARAMETERISASI ALTER DATABASE diatur ke FORCED.
Berikut adalah hasil @my_parameters OUTPUT
parameter parameter:
@0 int
Catatan
Urutan dan penamaan parameter dalam output sp_get_query_template dapat berubah antara rekayasa perbaikan cepat, paket layanan, dan peningkatan versi SQL Server. Peningkatan juga dapat menyebabkan serangkaian literal konstan yang berbeda diparameterkan untuk kueri yang sama, dan penspasian yang berbeda diterapkan dalam hasil kedua parameter output.
Lihat Juga
Prosedur Tersimpan Sistem (Transact-SQL)
Prosedur Tersimpan Mesin Database (Transact-SQL)
Tentukan Perilaku Parameterisasi Kueri dengan Menggunakan Panduan Paket
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk