爱东东

VS.NET,IT,个人,个人网站 爱东东 http://www.idongdong.net

 

OracleXml操作

1、Oracle存储XML数据的方法

大致来说分为两种:(1)XMLType、(2)普通的关系表。

(1)、其中XMLType的存储又可分为(a)基于XML模式(XML Schema)的存储、(b)非基于XML模式的存储。

        (a)、基于XML模式的存储可为:(a1)XMLType表、(a2)XMLType列

            (a1)、对于XMLType表存在是否使用XDB库,如果使用,就在XML模式中根据xdb:defaultTable定义的     XMLType;如果没有使用XDB库,就需要在SQL中定义XMLType表。

            (a2)、对于XMLType列,是指表中的一列定义为XMLType

      (b)、非基于XML模式的存储,是将XML数据存为CLOB中的XML类型

 (2)、对于普通的关系表,则需要用到XSU,SQL/XML。

2、 Oracle数据操作方法
建表
创建一个包括XMLTYPE的字段的表
create table gao1 (
 x1 xmltype
)

另外一种创建XMLTYPE的表的方法:
CREATE TABLE example2 of XMLType;
我们来看一下如何向包含XMLtype类型的table中新追加一条记录。
首先建立一个table
CREATE TABLE example2 of XMLType;

插入记录
然后准备插入一条记录,在插入记录之前,需要保证当前user具备CREATE ANY DIRECTORY的权限。
切换到其它用户下,如system,执行
GRANT CREATE ANY DIRECTORY TO XDB
(XDB是你作练习的用户)

再切换回XDB目录
执行如下命令:
CREATE OR REPLACE DIRECTORY XMLDIR AS 'D:\Oracle tudy\xdb'

准备插入一条新记录了(确保机器上存在'D:\Oracle tudy\xdb'目录,并且目录中有一个xml文件,文件名为'purchaseOrder.xml')
INSERT INTO example2
VALUES
(
 xmltype
         (
           bfilename('XMLDIR', 'purchaseOrder.xml'),
           nls_charset_id('AL32UTF8')
         )
)

查询
create table XMLTable (doc_id number, xml_data XMLType);

insert into XMLTable values (1,
        XMLType('<FAQ-LIST>
           <QUESTION>
                <QUERY>Question 1</QUERY>
                <RESPONSE>Answer goes here.</RESPONSE>
           </QUESTION>
        </FAQ-LIST>'));

select extractValue(xml_data, '/FAQ-LIST/QUESTION/RESPONSE')  -- XPath expression
from   XMLTable
where  existsNode(xml_data, '/FAQ-LIST/QUESTION[QUERY="Question 1"]') = 1;

建索引
create index XMLTable_ind on XMLTable
         (extractValue(xml_data, '/FAQ-LIST/QUESTION/QUERY') );

posted on 2007-05-20 10:57  爱东东  阅读(577)  评论(0编辑  收藏  举报

导航