/*
XML型態的資料可借XMLTable轉換成像實體Table一樣的結構
*/
-- 利用之前存到AREA 這個XML型態的資料
SQL> select * from area;
SYS_NC_ROWINFO$
-------------------------------------------------------------------------------------
< ?xml version="1.0" encoding="BIG5"? >
< ROWSET >
< THISROW >
< AREAID >1< /AREAID>
< AREA_ENAME >Africa< /AREA_ENAME>
< AREA_CNAME >非洲< /AREA_CNAME>
< /THISROW >
< THISROW >
< AREAID >2< /AREAID >
< AREA_ENAME >America< /AREA_ENAME >
< AREA_CNAME >美洲< /AREA_CNAME >
< /THISROW >
< THISROW >
< AREAID >3< /AREAID >
< AREA_ENAME >Asia< /AREA_ENAME >
< AREA_CNAME >亞洲< /AREA_CNAME >
< /THISROW >
< THISROW >
< AREAID >4< /AREAID >
< AREA_ENAME >Europe< /AREA_ENAME >
< AREA_CNAME >歐洲< /AREA_CNAME >
< /THISROW >
< THISROW >
< AREAID >5< /AREAID >
< AREA_ENAME >Middle East< /AREA_ENAME >
< AREA_CNAME >中東< /AREA_CNAME >
< /THISROW >
< THISROW >
< AREAID >6< /AREAID >
< AREA_ENAME >Oceania< /AREA_ENAME >
< AREA_CNAME >大洋洲< /AREA_CNAME >
< /THISROW >
< /ROWSET >
-- 運用XMLTable的語法如下:
-- 先存成 xml2structure.sql
select area2.ID,area2.AREA_ENAME,area2.AREA_CNAME
from area,
xmltable('for $i in /ROWSET/THISROW
return $i'
PASSING OBJECT_VALUE
COLUMNS ID VARCHAR(2) PATH 'AREAID',
AREA_ENAME VARCHAR2(32) PATH 'AREA_ENAME',
AREA_CNAME VARCHAR2(32) PATH 'AREA_CNAME'
) area2
/
-- 執行 xml2structure.sql
SQL> column id format a2
SQL> column area_ename format a20
SQL> column area_cname format a20
SQL> @c:\xml2structure.sql;
ID AREA_ENAME AREA_CNAME
-- -------------------- --------------------
1 Africa 非洲
2 America 美洲
3 Asia 亞洲
4 Europe 歐洲
5 Middle East 中東
6 Oceania 大洋洲
已選取 6 個資料列.