My Name is Kay....

DIY , 먹방 , 개발 , 육아 , 여행 좋아합니다.
AdBlock 사용시 화면이 정상적으로 노출되지 않습니다.
포스팅 관련 문의 및 개발 문의는 Email : wkzkfmxksi@gmail.com

추가 포스팅이 이뤄지지 않는 블로그입니다. 문의는 wkzkfmxksi@gmail.com 으로 연락주세요.
kay
조회 수 3547 추천 수 0 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄 첨부
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄 첨부

DB Table 데이터를 xml 생성하는 샘플 예문입니다.


FOR XML 모드에는 RAW , AUTO , EXPLICIT , PATH 등이 있으며 모드에 따라 조금씩 다릅니다.

뭔가 모드별로 다르긴한데..어렵네요..그래도 개념을 잡고 가는것이 좋다고 생각합니다.


RAW 모드는 행 집합의 각 행마다 SELECT 문으로 반환되는 단일 <row> 요소를 생성합니다. 중첩된 FOR XML 쿼리를 작성하여 XML 계층을 생성할 수 있습니다.

AUTO 모드는 SELECT 문이 지정된 방식에 따른 추론 방식을 사용하여 결과 XML에서 중첩 구조를 생성합니다.
생성된 XML의 셰이프는 최소한으로만 제어할 수 있습니다.
AUTO 모드 추론 방식으로 생성된 XML 셰이프와는 달리 XML 계층을 생성하도록 중첩된 FOR XML 쿼리를 작성할 수 있습니다.

EXPLICIT 모드는 XML 셰이프에 대해 더 많은 제어 기능을 제공합니다. 사용자는 XML 셰이프를 결정할 때 자신의 의지대로 특성과 요소를 혼합할 수 있습니다.
이를 위해서는 쿼리 실행에 따라 생성되는 결과 행 집합에 대한 특정 서식이 필요합니다.
그런 다음 이 행 집합 서식이 XML 셰이프로 매핑됩니다.
EXPLICIT 모드의 장점은 특성 및 요소를 자신의 의지대로 혼합하고, 래퍼 및 중첩된 복합 속성을 만들고
, 공백으로 구분된 값(예: 주문 ID 값 목록이 포함된 OrderID 특성)과 혼합된 내용을 만들 수 있습니다.

하지만 EXPLICIT 모드 쿼리 작성은 복잡할 수 있습니다.
중첩된 FOR XML RAW/AUTO/PATH 모드 쿼리 및 TYPE 지시어를 작성하여 EXPLICIT 모드를 사용하는 대신 새로운 FOR XML 기능 중 일부를 사용하여 계층을 생성할 수 있습니다.
중첩된 FOR XML 쿼리는 EXPLICIT 모드를 사용하여 생성할 수 있는 모든 XML을 만들 수 있습니다. 

PATH 모드를 사용하면 요소와 특성을 간단하게 혼합할 수 있고 추가 중첩을 간단하게 도입하여 복잡한 속성을 표시할 수 있습니다. FOR XML EXPLICIT 모드 쿼리를 사용하여 행 집합에서 해당 XML을 생성할 수 있지만 PATH 모드를 사용할 경우 복잡해지기 쉬운 EXPLICIT 모드 쿼리의 대안을 찾을 수 있습니다. XML 유형 인스턴스를 반환하는 중첩 FOR XML 쿼리 및 TYPE 지시어 작성 기능과 함께 PATH 모드를 사용하면 보다 간편하게 쿼리를 작성할 수 있습니다.


모드별 예제는 테크넷을 참고해주시고 개인적으로 많이 사용하는 EXPLICIT 모드로 예문을 작성했습니다. ( 테크넷 바로가기 : FOR XML )


쿼리 

SELECT 1 as 'TAG'
, NULL as Parent
, cityEnm as [City!1!name]
, cityCd as [City!1!CityCode!cdata]
FROM tblcity  
FOR XML explicit


결과 

a.png


explicit 문법은 말보단 아래 예를 보시면 이해가 빠릅니다. 

IC698414.gif


?

List of Articles
번호 제목 글쓴이 날짜 조회 수
28 [펌] 개인정보 보호를 위한 SQL Server 보안 가이드 file kay 2014.08.12 1532
27 [담아온글] 문서화 되지 않은 시스템 저장프로시저 kay 2013.10.29 2559
26 Zip Code 테이블 생성 및 데이터 kay 2013.06.07 3266
25 unix_timestamp 을 MSSQL 상에서 YYYY-MM-DD hh:mm:ss 포맷으로 상호 변환 kay 2015.08.26 1515
24 TRY CATCH 예외처리하기 kay 2013.04.04 5361
23 SSMSE(Microsoft SQL Server Management Studio Express) 쿼리 바로가기 file kay 2013.07.04 4049
22 ssms Ctrl+E 단축키로 쿼리 실행하기 file kay 2015.04.03 4469
21 SQL Server 에러 로그 확인 및 관리 방법 kay 2013.07.05 3032
20 SQL Server 상태 모니터링 1 kay 2013.11.14 11443
19 SQL Server Management Studio(SSMS) 메모리 점유율 문제 file kay 2015.07.13 1735
18 SQL Server Express 백업 스케쥴링 설정하기 ( 배치파일 - "sqlcmd"로 MS SQL 백업하기 ) kay 2013.06.11 7937
17 split 함수 "구분자로 문자열 쪼개기" kay 2013.08.19 8620
16 ORDER BY CASE WHEN 정렬하기 kay 2014.03.12 6458
15 openxml - xml 데이터 처리하기 kay 2013.04.10 4203
14 MSSQL 쿼리로 CSV 파일 데이터 업로드 하는 방법 ( BULK INSERT ) kay 2015.07.30 2307
13 MS-SQL 에서 연결된 서버 (Linked Server )에 MY-SQL DataBase 서버 등록하기 file kay 2014.07.15 4733
12 MS-SQL 설치 후 sa 로그인 활성화 file kay 2014.02.20 3555
11 MS-SQL 랜덤정렬 " NEWID() " kay 2014.04.23 5456
10 MS-SQL Express 원격접속 허용하도록 셋팅하기 file kay 2013.05.12 9669
9 MASS SQL Injection 일괄 삭제하기 kay 2013.03.31 3648
Board Pagination Prev 1 2 3 Next
/ 3