Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
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
Penting
Argumen untuk prosedur tersimpan yang diperluas harus dimasukkan dalam urutan tertentu seperti yang dijelaskan di bagian Sintaks. Jika parameter dimasukkan di luar urutan, pesan kesalahan terjadi.
[ @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 AS NVARCHAR (MAX);
DECLARE @my_parameters AS NVARCHAR (MAX);
EXECUTE 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.