반응형
- /**********************************************************************************************
-- Title : [2k5] XML위한 FOR XML절
-- Reference : hanbitbook.co.kr
-- Key word : for xml root elements xml data xml schema auto xsinil
**********************************************************************************************/
USE sqlDB;
GO - --FOR XML RAW
SELECT TOP (3) userId,name,addr,height FROM userTbl
WHERE height > 180
FOR XML RAW;
/*
<row userId="AJH " name="안정환" addr="강원 " height="182" />
<row userId="CJC " name="최진철" addr="제주 " height="185" />
<row userId="KNI " name="김남일" addr="경북 " height="183" />
*/
GO
--RAW 요소의 이름 변경
SELECT TOP (3) userId,name,addr,height FROM userTbl
WHERE height > 180
FOR XML RAW ('회원');
/*
<회원 userId="AJH " name="안정환" addr="강원 " height="182" />
<회원 userId="CJC " name="최진철" addr="제주 " height="185" />
<회원 userId="KNI " name="김남일" addr="경북 " height="183" />
*/
GO
--RAW 요소의 최하위 요소 추가
SELECT TOP (3) userId,name,addr,height FROM userTbl
WHERE height > 180
FOR XML RAW ('회원') , ROOT;
/*
<root>
<회원 userId="AJH " name="안정환" addr="강원 " height="182" />
<회원 userId="CJC " name="최진철" addr="제주 " height="185" />
<회원 userId="KNI " name="김남일" addr="경북 " height="183" />
</root>
*/
-- RAW 요소 및 ROOT 이름 변경
SELECT TOP (3) userId,name,addr,height FROM userTbl
WHERE height > 180
FOR XML RAW ('회원') , ROOT ('루트');
/*
<루트>
<회원 userId="AJH " name="안정환" addr="강원 " height="182" />
<회원 userId="CJC " name="최진철" addr="제주 " height="185" />
<회원 userId="KNI " name="김남일" addr="경북 " height="183" />
</루트>
*/
GO
--속성을 하위 요소로
SELECT TOP (3) userId,name,addr,height FROM userTbl
WHERE height > 180
FOR XML RAW , ELEMENTS;
/*
<row>
<userId>AJH </userId>
<name>안정환</name>
<addr>강원 </addr>
<height>182</height>
</row>
<row>
<userId>CJC </userId>
<name>최진철</name>
<addr>제주 </addr>
<height>185</height>
</row>
<row>
<userId>KNI </userId>
<name>김남일</name>
<addr>경북 </addr>
<height>183</height>
</row>
*/
GO
--XMLDATA 스키마로 표현
SELECT TOP (3) userId,name,addr,height FROM userTbl
WHERE height > 180
FOR XML RAW , XMLDATA;
GO - --XSD 스키마로 표현
SELECT TOP (3) userId,name,addr,height FROM userTbl
WHERE height > 180
FOR XML RAW , XMLSCHEMA;
GO - --XML AUTO 사용(RAW에 테이블 사용)
SELECT TOP (3) userId,name,addr,height FROM userTbl
WHERE height > 180
FOR XML AUTO;
/*
<userTbl userId="AJH " name="안정환" addr="강원 " height="182" />
<userTbl userId="CJC " name="최진철" addr="제주 " height="185" />
<userTbl userId="KNI " name="김남일" addr="경북 " height="183" />
*/ - --NULL이 있는 경우 표현되도록
SELECT TOP (3) userId,name,addr,mobile1, mobile2 FROM userTbl
WHERE height > 180
FOR XML AUTO, ELEMENTS; --NULL 표현 안됨
/*
<userTbl>
<userId>AJH </userId>
<name>안정환</name>
<addr>강원 </addr>
</userTbl>
<userTbl>
<userId>CJC </userId>
<name>최진철</name>
<addr>제주 </addr>
<mobile1>019</mobile1>
<mobile2>0000000 </mobile2>
</userTbl>
<userTbl>
<userId>KNI </userId>
<name>김남일</name>
<addr>경북 </addr>
<mobile1>016</mobile1>
<mobile2>6666666 </mobile2>
</userTbl>
*/
SELECT TOP (3) userId,name,addr,mobile1, mobile2 FROM userTbl
WHERE height > 180
FOR XML AUTO, ELEMENTS XSINIL; --NULL 표현 됨
/*
<userTbl xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<userId>AJH </userId>
<name>안정환</name>
<addr>강원 </addr>
<mobile1 xsi:nil="true" />
<mobile2 xsi:nil="true" />
</userTbl>
<userTbl xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<userId>CJC </userId>
<name>최진철</name>
<addr>제주 </addr>
<mobile1>019</mobile1>
<mobile2>0000000 </mobile2>
</userTbl>
<userTbl xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<userId>KNI </userId>
<name>김남일</name>
<addr>경북 </addr>
<mobile1>016</mobile1>
<mobile2>6666666 </mobile2>
</userTbl>
*/
반응형