sql:variable() 함수(XQuery)

XQuery 식 내의 SQL 관계형 값을 포함하는 변수를 제공합니다.

구문

sql:variable("variableName") as xdt:anyAtomicType?

주의

XML 데이터 내 관계형 데이터 바인딩 항목에 설명된 것과 같이 XML 데이터 형식 메서드를 사용할 때 이 함수를 사용하여 XQuery 내에 관계형 값을 제공할 수 있습니다.

예를 들어 query() 메서드를 사용하여 xml 데이터 형식 변수 또는 열에 저장된 XML 인스턴스에 대해 쿼리를 지정합니다. 일부 경우에는 쿼리에서 Transact-SQL 변수 또는 매개 변수로부터 값을 사용하거나 관계형 및 XML 데이터를 함께 사용할 수 있습니다. 이렇게 하려면 sql:variable 함수를 사용합니다.

SQL 값은 해당 XQuery 값으로 매핑되고 이 값의 유형은 해당 SQL 유형과 같은 XQuery 기본 유형이 됩니다.

XML-DML 삽입 문의 원본 식 컨텍스트에 있는 xml 인스턴스만 참조할 수 있으며 그외의 경우에는 xml 유형 또는 CLR(공용 언어 런타임) 사용자 정의 형식의 열을 참조할 수 없습니다.

1.sql:variable() 함수를 사용하여 Transact-SQL 변수 값을 XML로 가져오기

다음 예에서는 다음으로 구성된 XML 인스턴스를 생성합니다.

  • 비-XML 열의 값(ProductID). XML에서 이 값을 바인딩하는 데에는 sql:column() 함수가 사용됩니다.

  • 다른 테이블에 있는 비-XML 열의 값(ListPrice). 여기에서도 XML에서 이 값을 바인딩하는 데 sql:column()이 사용됩니다.

  • Transact-SQL 변수의 값(DiscountPrice). XML로 이 값을 바인딩하는 데 sql:variable() 메서드가 사용됩니다.

  • 쿼리를 보다 효율적으로 만들기 위한 xml 유형 열의 값(ProductModelName)

다음은 쿼리입니다.

DECLARE @price money

SET @price=2500.00
SELECT ProductID, Production.ProductModel.ProductModelID,CatalogDescription.query('
declare namespace pd="https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelDescription";

       <Product 
           ProductID="{ sql:column("Production.Product.ProductID") }"
           ProductModelID= "{ sql:column("Production.Product.ProductModelID") }"
           ProductModelName="{/pd:ProductDescription[1]/@ProductModelName }"
           ListPrice="{ sql:column("Production.Product.ListPrice") }"
           DiscountPrice="{ sql:variable("@price") }"
        />') 
FROM Production.Product 
JOIN Production.ProductModel
ON Production.Product.ProductModelID = Production.ProductModel.ProductModelID
WHERE ProductID=771

이전 쿼리에서 다음을 유의하십시오.

  • query() 메서드 내부의 XQuery는 XML을 생성합니다.

  • XQuery 프롤로그에서 네임스페이스 접두사를 정의하는 데 namespace 키워드가 사용됩니다. 이러한 작업은 스키마가 연결되어 있는 CatalogDescription xml 유형의 열에서 ProductModelName 특성 값이 검색되기 때문에 수행됩니다.

다음은 결과입니다.

<Product ProductID="771" ProductModelID="19" 
         ProductModelName="Mountain 100" 
         ListPrice="3399.99" DiscountPrice="2500" />

참고 항목

참조

SQL Server XQuery 확장 함수

개념

형식화된 XML과 형식화되지 않은 XML 비교

XML 데이터(SQL Server)

XML 데이터 인스턴스 만들기

XML DML(XML 데이터 수정 언어)

관련 자료

xml 데이터 형식 메서드