예제: HIDE 지시어 지정Example: Specifying the HIDE Directive

이 예에서는 HIDE 지시어 사용 방법을 보여 줍니다.This example illustrates the use of the HIDE directive. 이 지시어는 쿼리에 의해 반환된 범용 테이블의 행을 정렬하기 위한 특성은 쿼리가 반환하게 하고 최종 결과 XML 문서에는 그 특성이 포함되지 않게 하려는 경우에 유용합니다.This directive is useful when you want the query to return an attribute for ordering the rows in the universal table that is returned by the query, but you do not want that attribute in the final resulting XML document.

다음 쿼리는 이러한 XML을 생성합니다.This query constructs this XML:

<ProductModel ProdModelID="19" Name="Mountain-100">  
  <Summary>  
    <SummaryDescription>  
           <Summary> element from XML stored in CatalogDescription column  
    </SummaryDescription>  
  </Summary>  
</ProductModel>  

이 쿼리는 원하는 XML을 생성합니다.This query generates the XML you want. 이 쿼리는 열 이름의 Tag 값으로 1과 2가 포함된 두 열 그룹을 식별합니다.The query identifies two column groups having 1 and 2 as Tag values in the column names.

이 쿼리는 xml 데이터 형식의 query() 메서드(xml 데이터 형식) 를 사용하여 요약 설명을 검색하기 위해 xml 유형의 CatalogDescription 열을 쿼리합니다.This query uses the query() Method (xml Data Type) of the xml data type to query the CatalogDescription column of xml type in order to retrieve the summary description. 이 쿼리는 또한 xml 데이터 형식의 value() 메서드(xml 데이터 형식) 를 사용하여 CatalogDescription 열로부터 ProductModelID 값을 검색합니다.The query also uses the value() Method (xml Data Type) of the xml data type to retrieve the ProductModelID value from the CatalogDescription column. 이 값은 결과 XML에 필요하지 않지만 결과 행 집합을 정렬하는 데 필요합니다.This value is not required in the resulting XML, but is required to sort the resulting rowset. 따라서 열 이름 [Summary!2!ProductModelID!HIDE]에는 HIDE 지시어가 포함됩니다.Therefore, the column name, [Summary!2!ProductModelID!HIDE], includes the HIDE directive. 이 열이 SELECT 문에 포함되지 않은 경우 [ProductModel!1!ProdModelID] xml [Summary!2!SummaryDescription] 유형인 으로 행 집합을 정렬해야 하며 ORDER BY에서는 xml 유형의 열을 사용할 수 없습니다.If this column is not included in the SELECT statement, you will have to sort the rowset by [ProductModel!1!ProdModelID] and [Summary!2!SummaryDescription] that is xml type and you cannot use the xml type column in ORDER BY. 따라서 추가 [Summary!2!ProductModelID!HIDE] 열이 추가된 다음 ORDER BY 절에 지정됩니다.Therefore, the additional [Summary!2!ProductModelID!HIDE] column is added and is then specified in the ORDER BY clause.

USE AdventureWorks2012;  
GO  
SELECT  1 as Tag,  
        0 as Parent,  
        ProductModelID     as [ProductModel!1!ProdModelID],  
        Name               as [ProductModel!1!Name],  
        NULL               as [Summary!2!ProductModelID!hide],  
        NULL               as [Summary!2!SummaryDescription]  
FROM    Production.ProductModel  
WHERE   CatalogDescription is not null  
UNION ALL  
SELECT  2 as Tag,  
        1 as Parent,  
        ProductModelID,  
        Name,  
        CatalogDescription.value('  
         declare namespace PD="http://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelDescription";  
       (/PD:ProductDescription/@ProductModelID)[1]', 'int'),  
        CatalogDescription.query('  
         declare namespace pd="http://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelDescription";  
         /pd:ProductDescription/pd:Summary')  
FROM    Production.ProductModel  
WHERE   CatalogDescription is not null  
ORDER BY [ProductModel!1!ProdModelID],[Summary!2!ProductModelID!hide]  
FOR XML EXPLICIT  
go  

다음은 결과입니다.This is the result:

<ProductModel ProdModelID="19" Name="Mountain-100">  
  <Summary>  
    <SummaryDescription>  
      <pd:Summary xmlns:pd="http://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelDescription" xmlns="">  
        <p1:p xmlns:p1="http://www.w3.org/1999/xhtml">Our top-of-the-line competition mountain bike. Performance-enhancing options include the innovative HL Frame, super-smooth front suspension, and traction for all terrain. </p1:p>  
      </pd:Summary>  
    </SummaryDescription>  
  </Summary>  
</ProductModel>  

참고 항목See Also

FOR XML에서 EXPLICIT 모드 사용Use EXPLICIT Mode with FOR XML