SQL> CREATE TABLE TBLAREA
2 (
3 AREAID INTEGER,
4 AREA_ENAME VARCHAR2(32),
5 AREA_CNAME VARCHAR2(32)
6 );
已建立表格.
--借用上一篇diary使用的XML Table及語法新增資料
SQL> INSERT INTO TBLAREA
2 SELECT extractvalue(xseq.column_value,'/THISROW/AREAID') as AREAID,
3 extractvalue(xseq.column_value,'/THISROW/AREA_ENAME') as AREA_ENAME,
4 extractvalue(xseq.column_value,'/THISROW/AREA_CNAME') as AREA_CNAME
5 from AREA d,TABLE(XMLSEQUENCE(extract(value(d),'/ROWSET/THISROW'))) xseq;
已建立 6 個資料列.
SQL> commit;
確認完成.
SQL> SELECT * FROM TBLAREA;
AREAID AREA_ENAME AREA_CNAME
------- ----------------- ------------------------------
1 Africa 非洲
2 America 美洲
3 Asia 亞洲
4 Europe 歐洲
5 Middle Eas 中東
6 Oceania 大洋洲
已選取 6 個資料列.
--運用XMLQuery將TBLAREA實體Table資料讀出來組成xml格式
--再使用dbms_xdb.createresource將xml存入XML DB的repository去
DECLARE
XMLdoc XMLType;
res boolean;
BEGIN
SELECT XMLQuery(
'for $j in 1 return (
< AREAS > {
for $i in ora:view("TBLAREA")/ROW
return (< ROW >
< AREAID >{xs:integer($i/AREAID)}< /AREAID >
< AREA_ENAME >{xs:string($i/AREA_ENAME)}< /AREA_ENAME >
< AREA_CNAME >{xs:string($i/AREA_CNAME)}< /AREA_CNAME >
< /ROW >)} < /AREAS >)'
returning content) into XMLdoc
from dual;
res:= DBMS_XDB.CREATERESOURCE('/public/orion/xml/Table2XML.XML',XMLdoc);
commit;
END;
/
--將上述sql存成.sql: table2xml.sql
SQL> @c:\table2xml.sql
已順利完成 PL/SQL 程序.
--開啟Browser看看xml是否進到repository去

--點選Table2XML.XML看內容

SQL> select xmlquery('for $i in fn:doc("/public/orion/xml/Table2XML.XML")
2 return $i' RETURNING CONTENT) AS RESULT FROM DUAL;
RESULT
-------------------------------------------------------------------------------------
< AREAS >< ROW > < AREAID >1< /AREAID >< AREA_ENAME >Africa< /AREA_ENAME >< AREA_CNAME >非洲< /AREA_CNAME >< /ROW >< ROW >< AREAID >2< /AREAID >< AREA_ENAME >America< /AREA_ENAME >< AREA_CNAME >美洲< /AREA_CNAME >< /ROW >< ROW >< AREAID >3
< /AREAID >< AREA_ENAME >Asia< /AREA_ENAME >< AREA_CNAME >亞洲< /AREA_CNAME >< /ROW >< ROW >< AREAID >4< /AREAID >< AREA_ENAME >Europe< /AREA_ENAME >< AREA_CNAME >歐洲< /AREA_CNAME >< /ROW >< ROW >< AREAID >5< /AREAID >< AREA_ENAME >Middle East< /AREA_ENAME >< AREA_CNAME >中東< /AREA_CNAME >< /ROW >< ROW >< AREAID >6< /AREAID >< AREA_ENAME >Oceania< /AREA_ENAME >< AREA_CNAME >大洋洲 < /AREA_CNAME >< /ROW >< /AREAS >