sp_get_query_template(Transact-SQL)sp_get_query_template (Transact-SQL)

이 항목은 다음에 적용됩니다.예SQL Server(2008부터)아니요Azure SQL Database아니요Azure SQL Data Warehouse 아니요병렬 데이터 웨어하우스 THIS TOPIC APPLIES TO:yesSQL Server (starting with 2008)noAzure SQL DatabasenoAzure SQL Data Warehouse noParallel Data Warehouse

매개 변수가 있는 쿼리 형식을 반환합니다.Returns the parameterized form of a query. 반환된 결과는 강제 매개 변수화를 사용한 매개 변수가 있는 형식의 쿼리 결과와 비슷합니다.The results returned mimic the parameterized form of a query that results from using forced parameterization. TEMPLATE 계획 지침을 만들 때는 주로 sp_get_query_template는 사용 합니다.sp_get_query_template is used primarily when you create TEMPLATE plan guides.

항목 링크 아이콘 Transact-SQL 구문 규칙Topic link icon Transact-SQL Syntax Conventions


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


매개 변수가 있는 버전을 생성할 쿼리입니다.Is the query for which the parameterized version is to be generated. 'query_text' N 유니코드 지정자 뒤에 야 하 고 작은따옴표로 묶어야 합니다.'query_text' must be enclosed in single quotation marks and be preceded by the N Unicode specifier. N'query_text'에 할당 된 값은 @querytext 매개 변수입니다.N'query_text' is the value assigned to the @querytext parameter. 형식임 nvarchar (max)합니다.This is of type nvarchar(max).

Output 매개 변수 형식의 nvarchar (max)받을 매개 변수가 있는 형식으로 표시 된 바와 같이 제공 query_text 문자열 리터럴로 합니다.Is an output parameter of type nvarchar(max), provided as indicated, to receive the parameterized form of query_text as a string literal.

Output 매개 변수 형식의 nvarchar (max)표시 된 바에서 매개 변수가 매개 변수 이름과 데이터 형식 문자열 리터럴로 같이 제공 @templatetext합니다.Is an output parameter of type nvarchar(max), provided as indicated, to receive a string literal of the parameter names and data types that have been parameterized in @templatetext.


다음 경우 sp_get_query_template은 오류를 반환합니다.sp_get_query_template returns an error when the following occur:

  • 모든 상수 리터럴 값에 매개 변수가 없는 query_text합니다.It does not parameterize any constant literal values in query_text.

  • query_text 가 null 인 경우 유니코드 문자열이 아니거나, 구문상 유효 하지, 또는 컴파일할 수 없습니다.query_text is NULL, not a Unicode string, syntactically not valid, or cannot be compiled.

    Sp_get_query_template 오류를 반환 하는 경우의 값을 수정 하지 않습니다는 @templatetext 및 @parameters 출력 매개 변수입니다.If sp_get_query_template returns an error, it does not modify the values of the @templatetext and @parameters output parameters.


public 데이터베이스 역할의 멤버여야 합니다.Requires membership in the public database role.


다음 예에서는 두 상수 리터럴 값이 포함된 쿼리를 매개 변수가 있는 형식으로 반환합니다.The following example returns the parameterized form of a query that contains two constant literal values.

USE AdventureWorks2012;  
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 매개 변수의 매개 변수가 있는 결과는 다음과 같습니다.Here are the parameterized results of the @my_templatetext``OUTPUT 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

첫 번째 상수 리터럴 2는 매개 변수로 변환됩니다.Note that the first constant literal, 2, is converted to a parameter. 두 번째 리터럴 400HAVING 절 안에 있으므로 매개 변수로 변환되지 않습니다.The second literal, 400, is not converted because it is inside a HAVING clause. sp_get_query_template에 의해 반환된 결과는 ALTER DATABASE의 PARAMETERIZATION 옵션이 FORCED로 설정된 경우의 매개 변수가 있는 쿼리 형식과 유사합니다.The results returned by sp_get_query_template mimic the parameterized form of a query when the PARAMETERIZATION option of ALTER DATABASE is set to FORCED.

@my_parameters OUTPUT 매개 변수의 매개 변수가 있는 결과는 다음과 같습니다.Here are the parameterized results of the @my_parameters OUTPUT parameter:

@0 int  


sp_get_query_template의 출력에서 매개 변수의 순서와 이름은 SQL ServerSQL Server의 QFE(Quick-Fix Engineering), 서비스 팩 및 버전 업그레이드에 따라 변경될 수 있습니다.The order and naming of parameters in the output of sp_get_query_template can change between quick-fix engineering, service pack, and version upgrades of SQL ServerSQL Server. 또한 업그레이드를 수행하면 다른 상수 리터럴 집합은 같은 쿼리에 대한 매개 변수가 있을 수 있고 두 출력 매개 변수의 결과에 다른 간격이 적용될 수 있습니다.Upgrades can also cause a different set of constant literals to be parameterized for the same query, and different spacing to be applied in the results of both output parameters.

관련 항목:See Also

시스템 저장 프로시저(Transact-SQL) System Stored Procedures (Transact-SQL)
데이터베이스 엔진 저장 프로시저 ( Transact SQL ) Database Engine Stored Procedures (Transact-SQL)
계획 지침을 사용하여 쿼리 매개 변수화 동작 지정Specify Query Parameterization Behavior by Using Plan Guides