728x90
반응형
FOR XML RAW | AUTO | EXPLICIT [, XMLDATA] [, ELEMENTS] [, BINARY BASE64]
FOR XML : SQL 서버로부터 XML 데이터 결과 행 반환
RAW는 컬럼 값을 속성으로 반환하고 일반적인 행 요소로 각 행을 둘러싼다.
<row CustomerId="ALFKI" CompanyName="Alfreds Futterkiste" />
<row CustomerId="ANATR" CompanyName="Ana Trujillo Emparedados y helados" />
<row CustomerId="ANTON" CompanyName="Antonio Moreno Taquería" />
<row CustomerId="AROUT" CompanyName="Around the Horn" />
* RAW 조인 시 속성들 간에 단순한 1대 1 변환이 발생
SELECT Customers.CustomerID, CompanyName, OrderId
FROM Customers JOIN Orders
ON (Customers.CustomerId = Orders.CustomerId)
FOR XML RAW
<row CustomerID="ALFKI" CompanyName="Alfreds Futterkiste" OrderId="10643" />
<row CustomerID="ALFKI" CompanyName="Alfreds Futterkiste" OrderId="10692" />
<row CustomerID="ALFKI" CompanyName="Alfreds Futterkiste" OrderId="10702" />
<row CustomerID="ALFKI" CompanyName="Alfreds Futterkiste" OrderId="10835" />
<row CustomerID="ALFKI" CompanyName="Alfreds Futterkiste" OrderId="10952" />
<row CustomerID="ALFKI" CompanyName="Alfreds Futterkiste" OrderId="11011" />
<row CustomerID="ANATR" CompanyName="Ana Trujillo Emparedados y helados" OrderId="10308" />
<row CustomerID="ANATR" CompanyName="Ana Trujillo Emparedados y helados" OrderId="10625" />
<row CustomerID="ANATR" CompanyName="Ana Trujillo Emparedados y helados" OrderId="10759" />
<row CustomerID="ANATR" CompanyName="Ana Trujillo Emparedados y helados" OrderId="10926" />
AUTO는 컬럼 값을 속성으로 반환하고 컬럼이 있는 테이블의 이름을 따라 명명된 요소로 각 행을 둘러싼다.
<Customers CustomerId="ALFKI" CompanyName="Alfreds Futterkiste" />
<Customers CustomerId="ANATR" CompanyName="Ana Trujillo Emparedados y helados" />
<Customers CustomerId="ANTON" CompanyName="Antonio Moreno Taquería" />
<Customers CustomerId="AROUT" CompanyName="Around the Horn" />
* AUTO로 조인 시 속성은 요소의 특징을 지정. 반복되는 속성 분리
SELECT Customers.CustomerID, CompanyName, OrderId
FROM Customers JOIN Orders
ON (Customers.CustomerId = Orders.CustomerId)
FOR XML AUTO
<Customers CustomerID="ALFKI" CompanyName="Alfreds Futterkiste">
<Orders OrderId="10643" />
<Orders OrderId="10692" />
<Orders OrderId="10702" />
<Orders OrderId="10835" />
<Orders OrderId="10952" />
<Orders OrderId="11011" />
</Customers>
<Customers CustomerID="ANATR" CompanyName="Ana Trujillo Emparedados y helados">
<Orders OrderId="10308" />
<Orders OrderId="10625" />
<Orders OrderId="10759" />
<Orders OrderId="10926" />
</Customers>
EXPLICIT는 쿼리가 반환하는 XML의 형식을 사용자가 완전하게 제어하도록 한다.
FOR XML EXPLICIT에는 첫 번째 열에 XML 태그 ID를 나타내는 양의 정수가 있어야 합니다.
FOR XML EXPLICIT에는 두 번째 열에 XML 부모 태그 ID를 나타내는 음수가 아닌 정수나 NULL이 있어야 합니다.
SELECT 1 AS Tag,
NULL AS Parent
CustomerId AS [Customers!1!CustomerId], -- 아래 규칙 확인
FOR XML : SQL 서버로부터 XML 데이터 결과 행 반환
RAW는 컬럼 값을 속성으로 반환하고 일반적인 행 요소로 각 행을 둘러싼다.
<row CustomerId="ALFKI" CompanyName="Alfreds Futterkiste" />
<row CustomerId="ANATR" CompanyName="Ana Trujillo Emparedados y helados" />
<row CustomerId="ANTON" CompanyName="Antonio Moreno Taquería" />
<row CustomerId="AROUT" CompanyName="Around the Horn" />
* RAW 조인 시 속성들 간에 단순한 1대 1 변환이 발생
SELECT Customers.CustomerID, CompanyName, OrderId
FROM Customers JOIN Orders
ON (Customers.CustomerId = Orders.CustomerId)
FOR XML RAW
<row CustomerID="ALFKI" CompanyName="Alfreds Futterkiste" OrderId="10643" />
<row CustomerID="ALFKI" CompanyName="Alfreds Futterkiste" OrderId="10692" />
<row CustomerID="ALFKI" CompanyName="Alfreds Futterkiste" OrderId="10702" />
<row CustomerID="ALFKI" CompanyName="Alfreds Futterkiste" OrderId="10835" />
<row CustomerID="ALFKI" CompanyName="Alfreds Futterkiste" OrderId="10952" />
<row CustomerID="ALFKI" CompanyName="Alfreds Futterkiste" OrderId="11011" />
<row CustomerID="ANATR" CompanyName="Ana Trujillo Emparedados y helados" OrderId="10308" />
<row CustomerID="ANATR" CompanyName="Ana Trujillo Emparedados y helados" OrderId="10625" />
<row CustomerID="ANATR" CompanyName="Ana Trujillo Emparedados y helados" OrderId="10759" />
<row CustomerID="ANATR" CompanyName="Ana Trujillo Emparedados y helados" OrderId="10926" />
AUTO는 컬럼 값을 속성으로 반환하고 컬럼이 있는 테이블의 이름을 따라 명명된 요소로 각 행을 둘러싼다.
<Customers CustomerId="ALFKI" CompanyName="Alfreds Futterkiste" />
<Customers CustomerId="ANATR" CompanyName="Ana Trujillo Emparedados y helados" />
<Customers CustomerId="ANTON" CompanyName="Antonio Moreno Taquería" />
<Customers CustomerId="AROUT" CompanyName="Around the Horn" />
* AUTO로 조인 시 속성은 요소의 특징을 지정. 반복되는 속성 분리
SELECT Customers.CustomerID, CompanyName, OrderId
FROM Customers JOIN Orders
ON (Customers.CustomerId = Orders.CustomerId)
FOR XML AUTO
<Customers CustomerID="ALFKI" CompanyName="Alfreds Futterkiste">
<Orders OrderId="10643" />
<Orders OrderId="10692" />
<Orders OrderId="10702" />
<Orders OrderId="10835" />
<Orders OrderId="10952" />
<Orders OrderId="11011" />
</Customers>
<Customers CustomerID="ANATR" CompanyName="Ana Trujillo Emparedados y helados">
<Orders OrderId="10308" />
<Orders OrderId="10625" />
<Orders OrderId="10759" />
<Orders OrderId="10926" />
</Customers>
EXPLICIT는 쿼리가 반환하는 XML의 형식을 사용자가 완전하게 제어하도록 한다.
FOR XML EXPLICIT에는 첫 번째 열에 XML 태그 ID를 나타내는 양의 정수가 있어야 합니다.
FOR XML EXPLICIT에는 두 번째 열에 XML 부모 태그 ID를 나타내는 음수가 아닌 정수나 NULL이 있어야 합니다.
SELECT 1 AS Tag,
NULL AS Parent
CustomerId AS [Customers!1!CustomerId], -- 아래 규칙 확인
CompanyName AS [Customers!1], -- 아래 규칙 확인
ContactName AS [Customers!1!ContactName!element] -- 아래 규칙 확인
FROM Customers
FOR XML EXPLICIT
<Customers CustomerId="ALFKI">Alfreds Futterkiste<ContactName>Maria Anders</ContactName></Customers>
<Customers CustomerId="ANATR">Ana Trujillo Emparedados y helados<ContactName>Ana Trujillo</ContactName></Customers>
<Customers CustomerId="ANTON">Antonio Moreno Taquería<ContactName>Antonio Moreno</ContactName></Customers>
<Customers CustomerId="AROUT">Around the Horn<ContactName>Thomas Hardy</ContactName></Customers>
XMLDATA는 가져오는 문서에 대하여 XDR 스키마가 반환되도록 한다.
ELEMENTS는 XML AUTO 데이터에 있는 컬럼이 속성이 아닌 요소로서 반환되도록 한다.
SELECT CustomerID, CompanyName
FROM Customers
FOR XML AUTO, ELEMENTS
<Customers>
<CustomerID>ALFKI</CustomerID>
<CompanyName>Alfreds Futterkiste</CompanyName>
</Customers>
<Customers>
<CustomerID>ANATR</CustomerID>
<CompanyName>Ana Trujillo Emparedados y helados</CompanyName>
</Customers>
BINARY BASE64는 BASE64 인코딩을 사용하여 이진 데이터가 반환되도록 한다.
ContactName AS [Customers!1!ContactName!element] -- 아래 규칙 확인
FROM Customers
FOR XML EXPLICIT
<Customers CustomerId="ALFKI">Alfreds Futterkiste<ContactName>Maria Anders</ContactName></Customers>
<Customers CustomerId="ANATR">Ana Trujillo Emparedados y helados<ContactName>Ana Trujillo</ContactName></Customers>
<Customers CustomerId="ANTON">Antonio Moreno Taquería<ContactName>Antonio Moreno</ContactName></Customers>
<Customers CustomerId="AROUT">Around the Horn<ContactName>Thomas Hardy</ContactName></Customers>
XMLDATA는 가져오는 문서에 대하여 XDR 스키마가 반환되도록 한다.
ELEMENTS는 XML AUTO 데이터에 있는 컬럼이 속성이 아닌 요소로서 반환되도록 한다.
SELECT CustomerID, CompanyName
FROM Customers
FOR XML AUTO, ELEMENTS
<Customers>
<CustomerID>ALFKI</CustomerID>
<CompanyName>Alfreds Futterkiste</CompanyName>
</Customers>
<Customers>
<CustomerID>ANATR</CustomerID>
<CompanyName>Ana Trujillo Emparedados y helados</CompanyName>
</Customers>
BINARY BASE64는 BASE64 인코딩을 사용하여 이진 데이터가 반환되도록 한다.
728x90
반응형
'연구개발 > DBA' 카테고리의 다른 글
히스토그램, DBCC SHOW_STATISTICS (0) | 2011.08.21 |
---|---|
랜덤 시퀀스 생성(쿠폰번호, 보안티켓 등등) (0) | 2011.08.19 |
UDF에 대한 OBJECTPROPERTY() 옵션 (0) | 2011.08.18 |
VIEW에 있는 WITH SCHEMABINDING 이란? (0) | 2011.08.17 |
응용 프로그램 성능 최적화를 위한 숨겨진 데이터 찾기 (0) | 2011.08.16 |