반응형
  1. /**********************************************************************************************
    -- Title : [2k5] XML위한 FOR XML절

    -- Reference : hanbitbook.co.kr
    -- Key word : for xml root elements xml data xml schema auto xsinil
    **********************************************************************************************/
    USE sqlDB;
    GO

  2. --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
  3. --XSD 스키마로 표현
    SELECT TOP (3) userId,name,addr,height FROM userTbl
     WHERE height > 180
     FOR XML RAW , XMLSCHEMA;
    GO
  4. --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" />
    */
  5. --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>
    */

반응형

+ Recent posts