顯示具有 Oracle - XML 標籤的文章。 顯示所有文章
顯示具有 Oracle - XML 標籤的文章。 顯示所有文章

2008年8月15日 星期五

Exchange XML Data via Advanced Queue using Oracle10g


/*
  using previous article "region.xsd"  
  1) create folder/create resource
  2) grant privilege alter session and register schema for user taurus
  3) create queue table/queue for user orion,
    grant privilege to taurus,
    start queue
  4) enqueue by user taurus
  5) dequeue by user taurus
  6) xml data stored in repository
  7) stop queue
*/


  1)為user taurus 在repository建立folder,resource
  (刪除folder也是用dbms_xdb.deleteresource)


SQL> declare 
 2 res boolean;
 3 begin
 4 res:=dbms_xdb.createfolder('/public/taurus/');
 5 commit;
 6 end;
 7 /

已順利完成 PL/SQL 程序.

SQL> declare
 2 res boolean;
 3 begin
 4 res:=dbms_xdb.createfolder('/public/taurus/xml');
 5 commit;
 6 end;
 7 /

已順利完成 PL/SQL 程序.

SQL> declare
 2 res boolean;
 3 begin
 4 res:=dbms_xdb.createfolder('/public/taurus/xsd');
 5 commit;
 6 end;
 7 /

已順利完成 PL/SQL 程序.

SQL> declare
 2 res boolean;
 3 begin
 4 res:=dbms_xdb.createresource('/public/taurus/xsd/region.xsd',getDocument('region.xsd'));
 5 commit;
 6 end;
 7 /

已順利完成 PL/SQL 程序.

  2)grant privilege alter session and register
schema for user taurus

  2.1)以sysdba登入並給定權限

SQL>connect / as sysdba
已連線.
SQL>grant alter session to orion;
順利授權.

  2.2)以taurus登入再register schema

SQL> exec dbms_xmlschema.registerschema('http://localhost:8080/public/taurus/xsd/region.xsd',getDocument('region.xsd'));

已順利完成 PL/SQL 程序.

  3) create queue table/queue for user orion

  3.1)以orion登入

SQL>connect orion/orion
已連線.

  3.2)建立queue table

SQL> BEGIN
 2   dbms_aqadm.create_queue_table(
 3      queue_table => 'xml_qtab',
 4      comment => 'Exchange XML using AQ',
 5      multiple_consumers => FALSE,
 6      queue_payload_type => 'SYS.XMLType',
 7      compatible => '8.1'
 8     ) ;
 9 END ;
 10 /

已順利完成 PL/SQL 程序.

  3.3)建立queue

SQL> BEGIN
 2 dbms_aqadm.create_queue (queue_name => 'xml_queue',queue_table => 'xml_qtab');
 3 END;
 4 /

已順利完成 PL/SQL 程序.

  3.4)將權限給定taurus

SQL> begin
 2  dbms_aqadm.grant_queue_privilege(privilege => 'ALL',
 3     queue_name => 'orion.xml_queue',
 4     grantee => 'taurus',
 5     grant_option => FALSE
 6   );
 7 commit;
 8 end;
 9 /

已順利完成 PL/SQL 程序.

  3.5)起動queue

SQL> exec dbms_aqadm.start_queue('xml_queue');

已順利完成 PL/SQL 程序.

  4) enqueue by user taurus

SQL>connect taurus/taurus
已連線.

  4.1)enqueue程式如下,存成xenqueue.sql

DECLARE
    ENQUEUE_OPTIONS   DBMS_AQ.ENQUEUE_OPTIONS_T;
    MESSAGE_PROPERTIES  DBMS_AQ.message_properties_t;
    MSGID  RAW(400);

    XMLDOC SYS.XMLTYPE := XMLTYPE(
    '< ?xml version="1.0" encoding="UTF-8" ? >
    < ROWSET xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:noNamespaceSchemaLocation="http://localhost:8080/public/taurus/xsd/region.xsd" >
    < REGION id="1" >< REGNAME >Northern< /REGNAME >< /REGION >
    < REGION id="2" >< REGNAME >Central< /REGNAME >< /REGION >
    < REGION id="3" >< REGNAME >Southern< /REGNAME >< /REGION >
    < /ROWSET >');

BEGIN
    DBMS_AQ.ENQUEUE ('orion.xml_queue',
              ENQUEUE_OPTIONS,
              MESSAGE_PROPERTIES,
              XMLDOC,
              MSGID);
commit;
END;
/

  4.2)執行xenqueue.sql

SQL> @c:\xenqueue.sql

已順利完成 PL/SQL 程序.

  4.3)查看aq$xml_qtab裡是否有queue進

SQL> select user_data from aq$xml_qtab;

USER_DATA
------------------------------------------------------------------------------
< ?xml version="1.0" encoding="BIG5"? >
< ROWSET xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://
localhost:8080/public/taurus/xsd/region.xsd" >
< REGION id="1" >
< REGNAME >Northern< /REGNAME >
< /REGION >
< REGION id="2" >
< REGNAME >Central< /REGNAME >
< /REGION >
< REGION id="3" >
< REGNAME >Southern< /REGNAME >
< /REGION >
< /ROWSET >


  5)dequeue程式如下,存成xdequeue.sql
    dequeue出來的XML DATA直接createresource進repository

declare
    deqOpt dbms_aq.dequeue_options_t;
    msgProp dbms_aq.message_properties_t;
    deq_order_data SYS.XMLType;
    msgHdl RAW(16);
    res boolean;
BEGIN
    dbms_aq.dequeue(queue_name => 'orion.xml_queue',
             dequeue_options => deqOpt,
             message_properties => msgProp,
             payload => deq_order_data,
             msgid => msgHdl);

    res:=dbms_xdb.createresource('/public/taurus/xml/region.xml',deq_order_data);
    COMMIT;
end;
/

  5.2)執行xdequeue.sql

SQL> @c:\xdequeue.sql

已順利完成 PL/SQL 程序.

  5.3)查看aq$xml_qtab裡是否還有queue

SQL> select count(*) from aq$xml_qtab;

 COUNT(*)
 ----------
     0

  6) xml data stored in repository裡

SQL> select count(*) from regions;

 COUNT(*)
 ----------
     1

  7) stop queue

SQL>connect orion/orion
已連線.

SQL> exec dbms_aqadm.stop_queue('xml_queue');

已順利完成 PL/SQL 程序.

2008年8月11日 星期一

Oracle XML DB (III) using Oracle10g


/*
  1) 在 xsd 裡 xdb:defaultTable 直接建立 table
  2) 使用 UpdateXML 更新指定的 node
*/ 


-- region.xsd內容如下:

< ?xml version="1.0"? >
< xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
       xmlns:xdb="http://xmlns.oracle.com/xdb" xdb:storeVarrayAsTable="true" >
< xs:element name="ROWSET" type="ROWSET_TYPE" xdb:defaultTable="REGIONS" / >
   < xs:complexType name="ROWSET_TYPE" xdb:SQLType="REGION_OT" xdb:maintainDOM="false" >
    < xs:sequence >
      < xs:element name="REGION" type="REGION_TYPE" xdb:SQLCollType="REGION_ROW_NTT" minOccurs="0" maxOccurs="unbounded" xdb:maintainOrder="false"/ >
    < /xs:sequence >
   < /xs:complexType >
  < xs:complexType name="REGION_TYPE" xdb:SQLType="REGION_ROW_OT" xdb:maintainDOM="false" >
    < xs:sequence >
      < xs:element name="REGNAME" type="xs:string"/ >
    < /xs:sequence >
    < xs:attribute name="id" type="xs:string"/ >
< /xs:complexType >
< /xs:schema >


-- CREATE RESOURCE / REGISTER SCHEMA

SQL> declare
 2 res boolean;
 3 begin
 4 res:=dbms_xdb.createresource('/public/orion/xsd/region.xsd',getDocument('region.xsd'));
 5 commit;
 6 end;
 7 /

已順利完成 PL/SQL 程序.

SQL> exec dbms_xmlschema.registerschema('http://localhost:8080/public/orion/xsd/region.xsd',getDocument('region.xsd'));

已順利完成 PL/SQL 程序.

SQL> desc regions;
名稱 空值? 類型
----------------------------------------------------- -------- ------------------------------------
TABLE of SYS.XMLTYPE(XMLSchema "http://localhost:8080/public/orion/xsd/region.xsd" Element "ROWSET") STORAGE Object-relational TYPE "REGION_OT"


-- region.xml內容如下:

< ?xml version="1.0" encoding="UTF-8" ? >
< ROWSET xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="http://localhost:8080/public/orion/xsd/region.xsd" >
< REGION id="1" >< REGNAME >Northern< /REGNAME >< /REGION >
< REGION id="2" >< REGNAME >Southern< /REGNAME >< /REGION >
< /ROWSET >


-- CREATE RESOURCE

SQL> declare
 2 res boolean;
 3 begin
 4 res:=dbms_xdb.createresource('/public/orion/xml/region.xml',getDocument('region.xml'));
 5 commit;
 6 end;
 7 /

已順利完成 PL/SQL 程序.

-- 看新增結果

SQL> SELECT * FROM REGIONS X;

SYS_NC_ROWINFO$
--------------------------------------------------------
< ?xml version="1.0" encoding="BIG5"? >
< ROWSET >
 < REGION id="1" >
  < REGNAME >Northern< /REGNAME >
 < /REGION >
 < REGION id="2" >
  < REGNAME >Southern< /REGNAME >
 < /REGION >
< /ROWSET >

-- 將Northern更新為Central

SQL> update regions
 2 set object_value = updatexml(object_value,'/ROWSET/REGION[1]/REGNAME/text()','Central')
 3 where existsnode(object_value,'/ROWSET/REGION[1]') = 1;

已更新 1 個資料列.

SQL> commit;

確認完成.

SQL> select * from regions;

SYS_NC_ROWINFO$
------------------------------------------------------
< ?xml version="1.0" encoding="BIG5"? >
< ROWSET >
 < REGION id="1" >
  < REGNAME >Central< /REGNAME >
 < /REGION >
 < REGION id="2" >
  < REGNAME >Southern< /REGNAME >
 < /REGION >
< /ROWSET >

2008年7月31日 星期四

XMLTable transform xml data to structured data using Oracle10g


/*
  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 個資料列.

2008年7月30日 星期三

Create XML from Real Table using Oracle10g

--建立一個實體table

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 >

2008年7月24日 星期四

Oracle XML DB (II) using Oracle10g


/*
  現在就是要將XML(.xml及.xsd)放到XML DB的repository去.
  會用到DBMS_XDB及DBMS_XMLSCHEMA這兩個Package
*/

-- 檢查一下我的port number有沒有設定

SQL> SELECT dbms_xdb.gethttpport FROM dual;

GETHTTPPORT
-----------
0

-- 設定為8080

SQL> EXEC dbms_xdb.sethttpport(8080);

PL/SQL procedure successfully completed.

-- Listener叫起來

C:\>lsnrctl start

-- browser 輸入網址http://localhost:8080/
--之前已經使用DBMS_XDB.CREATEFOLDER去建立我自己希望在repository裡所呈現的路徑


/* 大致上是這樣
  public 
   └ orion
      ├ xml
      └ xsd
*/


/*
 ※ 加進去的檔案名稱是有區分大小寫的
 ex:
  /public/orion/xml/Area.xml和
  /public/orion/xml/area.xml是會被認為兩個完全不一樣的檔案
*/


--先加入xsd

SQL> declare
 2 res boolean;
 3 begin
 4 res:=dbms_xdb.createresource('/public/orion/xsd/area.xsd',getdocument('area.xsd'));
 5 end;
 6 /

已順利完成 PL/SQL 程序.

--加進來後,area.xsd出現在browser裡



--註冊xsd前須要權限上的異動
--以dba身份登入


SQL>connect / as sysdba
已連線.
SQL>grant alter session to orion;
順利授權.

--換回原來的USER後,接著去註冊xsd

SQL> begin
 2 dbms_xmlschema.registerschema('http://localhost:8080/public/orion/xsd/area.xsd',getDocument('area.xsd'));
 3 end;
 4 /

已順利完成 PL/SQL 程序.

--註冊後,area.xsd出現在sys/schema下


--這時候在user_objects裡就已經看得到AREA了


SQL> select object_name,object_type from user_objects
 2 where object_name like '%AREA%';

OBJECT_NAME    OBJECT_TYPE
---------------- -------------------------------------------------------------
AREA        TABLE
AREA$xd      TRIGGER
AREA_OT      TYPE
AREA_ROW_NTT   TYPE
AREA_ROW_OT    TYPE


--加入xml

SQL> declare
 2 res boolean;
 3 begin
 4 res:=dbms_xdb.createresource('/public/orion/xml/area.xml',getDocument('area.xml'));
 5 end;
 6 /

已順利完成 PL/SQL 程序.

--加進來後,area.xml出現在browser裡


--看一下AREA的變化

SQL> select count(*) from area;
  COUNT(*)
 ----------
      1

--對AREA做XML的QUERY

SQL> select extractvalue(xseq.column_value,'/THISROW/AREAID') as AREAID,
 2 extractvalue(xseq.column_value,'/THISROW/AREA_ENAME') as AREA_ENAME,
 3 extractvalue(xseq.column_value,'/THISROW/AREA_CNAME') as AREA_CNAME
 4 from AREA d,TABLE(XMLSEQUENCE(EXTRACT(VALUE(d),'/ROWSET/THISROW'))) xseq;

AREAID  AREA_ENAME         AREA_CNAME
 -------- ------------------------ -----------------------------
     1 Africa           非洲
     2 America           美洲
     3 Asia            亞洲
     4 Europe           歐洲
     5 Middle East        中東
     6 Oceania           大洋洲

已選取 6 個資料列.


-- 測試一下是否可以下條件

SQL> select extractvalue(xseq.column_value,'/THISROW/AREA_CNAME')
 2 from AREA d,TABLE(XMLSEQUENCE(EXTRACT(VALUE(d),'/ROWSET/THISROW'))) xseq
 3 where extractvalue(xseq.column_value,'/THISROW/AREAID') = 5;

EXTRACTVALUE(XSEQ.COLUMN_VALUE,'/THISROW/AREA_CNAME')
-----------------------------------------------------
中東


-- 未完,因為還有許多不了解的

Oracle XML DB (I) using Oracle10g


/*
 IBM Database Magazine DB2用「A Surprising Ace in the Hole」來形容XML的performance。
 到底真這麼強嗎? 我不知道。因為我並沒有 DB2 9 可以做測試。
 而Oracle 10g我是有的。Oracle在External Table的效能向來都是很好的,
 所以拿Oracle來操作一次。
 ※ IBM的小氣程度才是「A Surprising Ace in the Hole」咧!
*/


-- 前置處理
-- Create Directory

SQL>CREATE OR REPLACE DIRECTORY XMLDIR
 2 AS C:\oracle\product\10.2.0\ora_xml';
SQL>GRANT READ,WRITE ON DIRECTORY XMLDIR TO orion;

--AL32UTF8的NLS_CHARSET_ID是873

SQL>select nls_charset_id('AL32UTF8') from dual;

873

--按照Oracle XML DB (Database Developer's Guide)說的
-- 也建一個GetDocument Function好將指定的文件開啟成為clob讀出來
-- 不過這裡用的是loadclobfromfile


create or replace function getDocument(filename varchar2) return clob
   authid current_user is
xbfile bfile;
xclob clob:=' ';
lang_ctx number := DBMS_LOB.default_lang_ctx;
src_offset number := 1;
dst_offset number := 1;
warning number;
begin
    xbfile := bfilename('XMLDIR',filename);
    dbms_lob.fileopen(xbfile,dbms_lob.file_readonly);
    dbms_lob.loadclobfromfile(xclob,xbfile,dbms_lob.getlength(xbfile),src_offset,dst_offset,873,lang_ctx,warning);
    dbms_lob.fileclose(xbfile);
    return xclob;
end;


--準備一個area.xsd file,內容如下:
--※文件裡已將table名稱設定為AREA


< xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:xdb="http://xmlns.oracle.com/xdb" xdb:storeVarrayAsTable="true" >
 < xs:element name="ROWSET" type="ROWSET_TYPE" xdb:defaultTable="AREA" / >
  < xs:complexType name="ROWSET_TYPE" xdb:SQLType="AREA_OT" xdb:maintainDOM="false" >
   < xs:sequence >
    < xs:element name="THISROW" type="ROW_TYPE" xdb:SQLCollType="AREA_ROW_NTT" minOccurs="0" maxOccurs="unbounded" xdb:maintainOrder="false"/ >
   < /xs:sequence >
   < /xs:complexType >
   < xs:complexType name="ROW_TYPE" xdb:SQLType="AREA_ROW_OT" xdb:maintainDOM="false" >
    < xs:sequence >
     < xs:element name="AREAID" type="xs:int" xdb:SQLType="NUMBER"/ >
     < xs:element name="AREA_ENAME" type="xs:string"/ >
     < xs:element name="AREA_CNAME" type="xs:string"/ >
    < /xs:sequence >
   < /xs:complexType >
< /xs:schema >

--準備一個area.xml file,內容如下:
/*
  ※ area.xml除了encoding要設為UTF-8之外,儲存時須將格式設為UTF-8,
   否則 中文字 在browser以及使用loadclobfromfile時會出現亂碼
  ※ http://localhost:8080/public/orion/xsd/area.xsd是
   area.xsd將註冊及存放的地方,大小寫是有區分的
*/


< ?xml version="1.0" encoding="UTF-8" ? >
< ROWSET xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="http://localhost:8080/public/orion/xsd/area.xsd" >
< 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 >


--試用看看

SQL> select XMLTYPE(getDocument('area.xml')) from dual;

XMLTYPE(GETDOCUMENT('AREA1.XML'))
-----------------------------------------------------------------------
< ?xml version="1.0" encoding="BIG5"? >
< ROWSET xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://
localhost:8080/public/orion/xsd/area.xsd" >
< 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 >


-- 待續 Oracle XML DB(II)