sp_get_query_template

매개 변수가 있는 쿼리 형식을 반환합니다. 반환된 결과는 강제 매개 변수화를 사용하여 얻은 매개 변수가 있는 쿼리 형식과 유사합니다. TEMPLATE 계획 지침을 만들 때는 주로 sp_get_query_template을 사용합니다.

항목 링크 아이콘Transact-SQL 구문 표기 규칙

구문

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

인수

  • 'query_text'
    매개 변수가 있는 버전을 생성할 쿼리입니다. **'query_text'**는 작은따옴표로 묶고 앞에 N 유니코드 지정자를 사용해야 합니다. **N'query_text'**는 @querytext 매개 변수에 할당된 값입니다. 형식은 **nvarchar(max)**입니다.
  • @templatetext
    매개 변수가 있는 형식의 query_text를 문자열 리터럴로 얻기 위한 nvarchar(max) 형식의 출력 매개 변수이며 표시된 바와 같이 제공됩니다.
  • @parameters
    @templatetext에서 매개 변수화된 매개 변수 이름 및 데이터 형식을 문자열 리터럴로 얻기 위한 nvarchar(max) 형식의 출력 매개 변수이며 표시된 바와 같이 제공됩니다.

주의

다음 경우 sp_get_query_template은 오류를 반환합니다.

  • query_text의 모든 상수 리터럴 값을 매개 변수화하지 않는 경우
  • query_text가 NULL이거나, 유니코드 문자열이 아니거나, 구문상 유효하지 않거나, 컴파일할 수 없는 경우

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

사용 권한

public 데이터베이스 역할의 멤버여야 합니다.

다음 예에서는 두 상수 리터럴 값이 포함된 쿼리를 매개 변수가 있는 형식으로 반환합니다.

USE AdventureWorks;
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는 매개 변수로 변환됩니다. 두 번째 리터럴 400HAVING 절 안에 있으므로 매개 변수로 변환되지 않습니다. sp_get_query_template에 의해 반환된 결과는 ALTER DATABASE의 PARAMETERIZATION 옵션이 FORCED로 설정된 경우의 매개 변수가 있는 쿼리 형식과 유사합니다. 이러한 조건에서 매개 변수화되는 변수에 대한 자세한 내용은 강제 매개 변수화를 참조하십시오.

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

@0 int

[!참고] sp_get_query_template의 출력에서 매개 변수의 순서와 이름은 SQL Server의 QFE(quick-fix engineering), 서비스 팩 및 버전 업그레이드에 따라 변경될 수 있습니다. 또한 업그레이드를 수행하면 같은 쿼리에 대해 다른 상수 리터럴 집합이 매개 변수화되거나 두 출력 매개 변수의 결과에 다른 간격이 적용될 수 있습니다.

참고 항목

참조

시스템 저장 프로시저(Transact-SQL)
데이터베이스 엔진 저장 프로시저(Transact-SQL)

관련 자료

계획 지침을 사용하여 쿼리 매개 변수화 동작 지정
매개 변수가 있는 쿼리를 위한 계획 지침 디자인

도움말 및 정보

SQL Server 2005 지원 받기