XQuery 확장 함수 - sql:variable()
적용 대상:SQL Server
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 insert 문의 원본 식 컨텍스트에서만 xml 인스턴스를 참조할 수 있습니다. 그렇지 않으면 xml 형식 또는 CLR(공용 언어 런타임) 사용자 정의 형식의 값을 참조할 수 없습니다.
예
A. sql:variable() 함수를 사용하여 Transact-SQL 변수 값을 XML로 가져오기
다음 예제에서는 다음으로 구성된 XML 인스턴스를 생성합니다.
XML이 아닌 열의 값(
ProductID
)입니다. sql:column() 함수는 XML에서 이 값을 바인딩하는 데 사용됩니다.다른 테이블의 비 XML 열에 있는 값(
ListPrice
)입니다.sql:column()
다시 XML에서 이 값을 바인딩하는 데 사용됩니다.Transact-SQL 변수의 값(
DiscountPrice
)입니다. 이sql:variable()
메서드는 이 값을 XML에 바인딩하는 데 사용됩니다.쿼리를 더 흥미롭게 만들기 위해 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
이전 쿼리의 다음 사항에 유의하세요.
메서드 내의 XQuery는
query()
XML을 생성합니다.키
namespace
워드는 XQuery 프롤로그에서 네임스페이스 접두사를 정의하는 데 사용됩니다. 이 작업은 특성 값이ProductModelName
연결된 스키마가CatalogDescription xml
있는 형식 열에서 검색되기 때문에 수행됩니다.
결과는 다음과 같습니다.
<Product ProductID="771" ProductModelID="19"
ProductModelName="Mountain 100"
ListPrice="3399.99" DiscountPrice="2500" />
참고 항목
SQL Server XQuery 확장 함수
형식화된 XML과 형식화되지 않은 XML 비교
XML 데이터(SQL Server)
XML 데이터의 인스턴스 만들기
xml 데이터 형식 메서드
XML DML(XML 데이터 수정 언어)