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 TEMPLATE
panduan paket.
Sintaks
sp_get_query_template
[ @querytext = ] N'querytext'
, @templatetext OUTPUT
, @parameters OUTPUT
[ ; ]
Argumen
[ @querytext = ] N'querytext'
Kueri yang versi parameternya akan dibuat. @querytext adalah nvarchar(max), dan harus diapit dalam tanda kutip tunggal dan didahului oleh penentu N
Unicode.
@templatetext
Parameter OUTPUT jenis nvarchar(max), disediakan seperti yang ditunjukkan, untuk menerima bentuk parameter @querytext sebagai string literal.
@parameters
Parameter output jenis nvarchar(max), yang disediakan seperti yang ditunjukkan, untuk menerima literal string dari nama parameter dan jenis data yang diparameterkan dalam @templatetext.
Keterangan
sp_get_query_template
mengembalikan kesalahan saat hal berikut ini terjadi:
- Ini tidak membuat parameter nilai harfiah konstanta dalam @querytext.
- @querytext adalah
NULL
, bukan string Unicode, secara sintetis tidak valid, atau tidak dapat dikompilasi.
Jika sp_get_query_template
mengembalikan kesalahan, itu tidak mengubah nilai parameter @templatetext dan @parameters output.
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
Literal konstanta pertama, 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 PARAMETERIZATION
opsi ALTER DATABASE
diatur ke FORCED
.
Berikut adalah hasil @my_parameters OUTPUT
parameter parameter:
@0 int
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.