SQL에서 그 값을 리턴된 값을 XML형식으로 뿌려줄려면 어떻게 해야 되나요?
APP(TOMCAT) 셋팅이나 등등 그런 것도 해야 될까요?
아시는 분들 도움 좀 부탁합니다.
데이타베이스 XML 기능
인터넷상에서 일어나는 모든 정보 교환의 표준으로서 XML의 역할이 점점 더 커지고 있다. 'XML은
옵션이 아니라 대세다.'라는 말을 쉽게 들을 수 있는데, 데이타베이스에서 XML을 읽고 쓸 수 있고,
또 기존 애플리케이션에 XML 데이타를 통합할 수 있는 기능은 필수적이다.
이러한 XML을 다른 데이타타입처럼 쉽게 다룰 수 있게 도와주는 것이 XDK(XML Developer's Kit) 이며,
Oracle9i에서는 몇 개의 컴포넌트가 더 추가되었고 기존의 컴포넌트도 그 기능이 더 향상되었다. 가장
큰 변화는 XML Schema 1.0을 지원하는 것인데, 새로운 컴포넌트는 XML Schema Processors와
XDK Java Beans(DBAccess Class, DBViewer Bean)이다.
또한 Oracle9i에서 가장 눈에 띄는 기능으로, 새롭게 추가된 데이타타입으로 XMLTYPE을 들 수 있다.
XDK는 현재 http://otn.oracle.co.kr에서 무료로 다운로드 받을 수 있으며, 여러 샘플을 해당
사이트에서 접할 수 있을 것이다. 여기에서는 Oracle9i에 XML을 특정 데이타타입으로 저장할 수
있는 기능인 XMLTYPE에 대해 설명하기로 하자.
XMLType
Oracle9i에서 XMLType이라는 새로운 데이타타입을 제공한다. XMLType은 XML 문서를 CLOB처럼
저장하며, Contains operator와 XPath-like syntax를 써서 Oracle9i Text (interMedia Text) 인덱스를
사용할 수 있다. 현재 버전에서는 서버단에서만 PL/SQL, SQL을 사용해서 XMLType을 이용할 수 있으며,
현재는 CLOB으로만 저장되지만, 추후에는 BLOBs, NCLOBs 등으로 확장될 것이다.
그러면, 사용 예를 살펴보기로 하자.
<리스트5>는 XMLType 열을 가진 테이블에 XML 문서를 삽입하고, extract(), existsNode(),
getClobVal(), getStringVal()과 같은 함수를 사용하여 XML 문서를 읽는 예제이다.
/*List 5 시작 */ SQL> CREATE TABLE po_tab ( 2 pono number primary key, 3 orderdate date, 4 poxml sys.XMLType); SQL> insert into po_tab values (100, TO_DATE('February 07, 2001', 'Month dd, YYYY'), sys.xmltype.createXML (' PO_1 ')); SQL> insert into po_tab values (200, TO_DATE('February 07, 2001', 'Month dd, YYYY'), sys.xmltype.createXML ('PO_2')); SQL> insert into po_tab values (300, TO_DATE('February 07, 2001', 'Month dd, YYYY'), sys.xmltype.createXML ('한글')); SQL> select e.poxml.getclobval() from po_tab e; E.POXML.GETCLOBVAL() ------------------------------------------------------------------ PO_1 PO_2 한글 SQL> select e.poxml.extract('/PO/PONAME').getClobVal() 2 from po_tab e 3 where e.poxml.existsNode('/PO/@pono') = 1 and 4 e.poxml.extract('/PO/@pono').getStringVal() = '100' and 5 e.poxml.extract('/PO/PONAME').getStringVal() like '%PO%'; E.POXML.EXTRACT('/PO/PONAME').GETCLOBVAL() ------------------------------------------------------------------ PO_1 테이블에 XML 문서 저장 및 읽기