Bagikan melalui


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.

Konvensi sintaks transact-SQL

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