日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

(1)oracle中XMLType類型的使用

 昵稱10087950 2016-08-09

Oracle9i之xmltype應用(1)


介紹了oracle9i的xmltype數(shù)據(jù)類型的基本使用
包括:建立含有xmltype數(shù)據(jù)類型的表
插入(insert)數(shù)據(jù)
查詢(select)數(shù)據(jù)
更新(update)數(shù)據(jù)
添加超過4k字節(jié)的xml文檔到xmltype型字段
適合初學者。

關鍵詞: oracle9i xmltype

oracle從9i開始支持一種新的數(shù)據(jù)類型---- xmltype,用于存儲和管理xml數(shù)據(jù),并提供了很多的functions,用來直接讀取xml文檔和管理節(jié)點。下面將介紹xmltype的一些基本使用。

1.建立含有xmltype數(shù)據(jù)類型的表
create table abc (id number,xmldoc sys.xmltype);
聲明xmltype型字段用:sys.xmltype

2.向帶有xmltype類型的表插入帶有數(shù)據(jù)
insert into abc (id,xmldoc) value (abc.nextval , sys.xmlType.createXML('<name><a id="1" value="some values">abc</a></name>') );
插入用 sys.xmlType.createXML('some xml doc')

3.直接查詢xmltype字段里面的內(nèi)容
得到id=1的value變臉的值
select i.xmldoc.extract('//name/a[@id=1]/@value').getStringVal() as ennames, id from abc i


得到a節(jié)點的值
select id, i.xmldoc.extract('//name/a/text()').getStringVal() as truename from abc i

得到節(jié)點id屬性的值

Select hd.Data_t.extract('/root/name/@id').getStringVal()    As Name FROM sehr_house_data hd

4.更新xmltype里面的數(shù)據(jù)
update abc set xmldoc=updateXML(xmldoc,“//name/a[@id=1]/@value”,''some new value'') where ......
(注意:如果里面沒有<a id="1">這個節(jié)點,將不能update)

 

 Oracle 9i提供的XML內(nèi)置特性:

Oracle 9i支持XMLType類型,它是一種Oracle 9i系統(tǒng)定義的對象類型。XMLType有內(nèi)置的函數(shù),有力的提供了推XML的創(chuàng)建,索檢,索引等功能。

用戶可以使用SQL函數(shù)動態(tài)的產(chǎn)生XML文檔。這些函數(shù)有:SYS_XMLGEN和SYS_XMLAGG和PL/SQL包DBMS_XMLGEN。

XML特性

描述

XMLType

1、XMLType是oracle系統(tǒng)定義的數(shù)據(jù)類型,系統(tǒng)預定義了內(nèi)部函數(shù)去訪問XML數(shù)據(jù)??梢詧?zhí)行下面的任務:

2、創(chuàng)建XMLType列,在XMLType列上面使用內(nèi)置的函數(shù)。

創(chuàng)建PL/SQL函數(shù)和存儲過程,可以使用XMLType作為參數(shù)傳入,或者作為返回參數(shù)傳出。

3、在XMLType列上面存儲、索引、處理XML數(shù)據(jù)。

 

DBMS_XMLGEN

 


DBMS_XMLGEN是一個PL/SQL包,提轉(zhuǎn)換一個sql查詢的結(jié)果到標準的xml格式,返回的是一個XMLTye類型或者是CLOB,DBMS_GEN是用c語言實現(xiàn),放置在數(shù)據(jù)庫的內(nèi)核中。DBMS_XMLGEN包和DBMS_XMLQuery包的功能相相似。

SYS_XMLGEN

XMLGEN是一個SQL函數(shù),它用來在sql查詢中產(chǎn)生XML,DBMS_XMLGEN和其他包操作在查詢水平,

SYS_XMLGEN把一個值,對象類型,XMLType實例轉(zhuǎn)換成一個XML文檔。SYS_XMLGEN返回的類型是XMLType。

 

SYS_XMLAGG

SYS_XMLAGG 是一個聚合函數(shù),它聚合在XMLType類型上面。

SYS_XMLAGG聚合所有的輸入的XML文檔合片斷并且通過連接XML片斷合增加上一層的標簽產(chǎn)生單個XML文檔

 

UriTypes

UriType 類型家族能夠在數(shù)據(jù)庫中存儲和查詢Ur-refs,SYS.UriType是一抽象的數(shù)據(jù)類型,它提供功能去訪問URL指向的數(shù)據(jù)。

 

SYS.HttpUriType和SYS.DBUriType是UriType的子類型。SYS.HttpUriType存儲的是HTTP URLs,DBUriType存儲的是intra-database 參考。你可以定義自己的SYS.UriType的子類型。

 


如何使用XMLType
創(chuàng)建XMLType列:
CREATE TABLE warehouses(

warehouse_id NUMBER(3),

warehouse_spec SYS.XMLTYPE,

warehouse_name VARCHAR2(35),

location_id NUMBER(4));

插入XMLType列數(shù)據(jù)
INSERT into warehouses (warehouse_id, warehouse_spec) VALUES (1001, sys.XMLType.createXML(

’<Warehouse whNo="100">

<Building>Owned</Building>

</Warehouse>’));

createXML的輸入?yún)?shù)可以是任何的返回為varch


ar2的表達式或者式CLOB。CreateXML能夠檢測XML是否的符合合適的,但是它不能檢查XML的有效性。


使用在XMLType列上sql查詢
SELECT

w.warehouse_spec.extract(''/Warehouse/Building/text()'').getStringVal()

"Building"

FROM warehouses w

warehouse_spec是一個XMLType列,


Extract()是操作在上面的函數(shù)

查詢結(jié)果如下:

Building

-----------------

Owned

更新XMLType的列
UPDATE warehouses SET warehouse_spec =

sys.XMLType.createXML(

’<Warehouse whono="200">

<Building>Leased</Building>

</Warehouse>’));

刪去XMLType的列
DELETE FROM warehouses e

WHERE e.warehouse_spec.extract(’//Building/text()’).getStringVal()

= ’Leased’;

    本站是提供個人知識管理的網(wǎng)絡存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多