다음을 통해 공유


sp_get_query_template(Transact-SQL)

적용 대상: SQL Server

매개 변수가 있는 형식의 쿼리를 반환합니다. 반환된 결과는 강제 매개 변수화를 사용한 매개 변수가 있는 형식의 쿼리 결과와 비슷합니다. sp_get_query_template 는 주로 계획 지침을 만들 TEMPLATE 때 사용됩니다.

Transact-SQL 구문 표기 규칙

구문

sp_get_query_template
   [ @querytext = ] N'querytext'
   , @templatetext OUTPUT
   , @parameters OUTPUT
[ ; ]

인수

[ @querytext = ] N'querytext'

매개 변수가 있는 버전을 생성할 쿼리입니다. @querytext nvarchar(max)이며 작은따옴표로 묶어야 하며 유니코드 지정자 앞에 N 와야 합니다.

@templatetext

매개 변수가 있는 형식의 @querytext 문자열 리터럴로 수신하기 위해 표시된 대로 제공된 nvarchar(max) 형식OUTPUT 매개 변수입니다.

@parameters

매개 변수 이름 및 @templatetext 매개 변수가 있는 데이터 형식의 문자열 리터럴을 수신하기 위해 표시된 대로 제공된 nvarchar(max) 형식의 출력 매개 변수입니다.

설명

sp_get_query_template 는 다음이 발생할 때 오류를 반환합니다.

  • @querytext 상수 리터럴 값을 매개 변수화하지 않습니다.
  • @querytext 유니코드 문자열이 NULL아니거나 구문적으로 유효하지 않거나 컴파일할 수 없습니다.

오류를 반환하는 경우 sp_get_query_template @templatetext 및 @parameters 출력 매개 변수의 값을 수정하지 않습니다.

사용 권한

공용 데이터베이스 역할의 멤버 자격이 필요합니다.

예제

다음 예제에서는 두 개의 상수 리터럴 값을 포함하는 쿼리의 매개 변수가 있는 형식을 반환합니다.

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;

매개 변수의 매개 변수가 있는 결과는 다음과 같습니다.@my_templatetext OUTPUT

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

첫 번째 상수 리터럴 2은 매개 변수로 변환됩니다. 두 번째 리터럴 400은 절 내에 HAVING 있으므로 변환되지 않습니다. 옵션이 로 설정된 경우 매개 변수가 있는 형식의 ALTER DATABASE 쿼리를 PARAMETERIZATION 모방하여 FORCEDsp_get_query_template 반환되는 결과입니다.

매개 변수의 매개 변수가 있는 결과는 다음과 같습니다.@my_parameters OUTPUT

@0 int

출력에서 매개 변수의 순서와 이름은 SQL Server의 sp_get_query_template 빠른 수정 엔지니어링, 서비스 팩 및 버전 업그레이드 간에 변경 될 수 있습니다. 업그레이드를 통해 동일한 쿼리에 대해 다른 상수 리터럴 집합이 매개 변수화되고 두 출력 매개 변수의 결과에 서로 다른 간격이 적용될 수도 있습니다.