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 TEMPLATE panduan paket.

Konvensi sintaks transact-SQL

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.