FOR XML을 사용하여 행 집합에서 XML 생성

적용 대상:SQL ServerAzure SQL DatabaseAzure SQL Managed Instance

새로운 TYPE 지시어로 FOR XML을 사용하여 행 집합으로부터 xml 데이터 형식의 인스턴스를 생성할 수 있습니다.

결과를 xml 데이터 형식 열, 변수 또는 매개 변수에 할당할 수 있습니다. 또한 FOR XML을 중첩하여 계층 구조를 생성할 수 있습니다. 이렇게 하면 FOR XML EXPLICIT보다 중첩된 FOR XML을 쓰기가 훨씬 더 편리하지만 심층 계층 구조에서도 잘 수행되지 않을 수 있습니다. FOR XML은 또한 새로운 PATH 모드를 제공합니다. 이 새 모드는 열 값이 표시되는 XML 트리의 경로를 지정합니다.

FOR XML TYPE 지시문을 사용하여 SQL 구문을 사용하여 관계형 데이터에 대한 읽기 전용 XML 뷰를 정의할 수 있습니다. 다음 예제와 같이 SQL 문 및 포함된 XQuery를 사용하여 뷰를 쿼리할 수 있습니다. 저장 프로시저에서 이러한 SQL 보기를 참조할 수도 있습니다.

예: 생성된 xml 데이터 형식을 반환하는 SQL 뷰

다음 SQL 뷰 정의는 XML 열에서 검색된 관계형 열, pk 및 책 작성자를 통해 XML 뷰를 만듭니다.

CREATE VIEW V (xmlVal) AS
SELECT pk, xCol.query('/book/author')
FROM   T
FOR XML AUTO, TYPE;

V 보기에는 단일 columnxmlVal이 XML 형식. 인 단일 행이 포함되어 있습니다. 일반 xml 데이터 형식 인스턴스처럼 쿼리할 수 있습니다. 예를 들어 다음 쿼리는 이름이 "David"인 작성자를 반환합니다.

SELECT xmlVal.query('//author[first-name = "David"]')
FROM   V;

SQL 뷰 정의는 주석이 추가된 스키마를 사용하여 만든 XML 뷰와 유사합니다. 그러나 중요한 차이점이 있습니다. SQL 뷰 정의는 읽기 전용이며 포함된 XQuery로 조작되어야 합니다. XML 뷰는 주석 지정 스키마를 사용하여 생성됩니다. 또한 SQL 뷰는 XQuery 식을 적용하기 전에 XML 결과를 구체화하지만 XML 뷰의 XPath 쿼리는 기본 테이블에서 SQL 쿼리를 평가합니다.

참고 항목