Oracle9i之xmltype應用(1)
介紹了oracle9i的xmltype數據類(lèi)型的基本使用
包括:建立含有xmltype數據類(lèi)型的表
插入(insert)數據
查詢(xún)(select)數據
更新(update)數據
添加超過(guò)4k字節的xml文檔到xmltype型字段
適合初學(xué)者。
關(guān)鍵詞: oracle9i xmltype
oracle從9i開(kāi)始支持一種新的數據類(lèi)型----xmltype,用于存儲和管理xml數據,并提供了很多的functions,用來(lái)直接讀取xml文檔和管理節點(diǎn)。下面將介紹xmltype的一些基本使用。
1.建立含有xmltype數據類(lèi)型的表
create table abc (id number,xmldoc sys.xmltype);
聲明xmltype型字段用:sys.xmltype
2.向帶有xmltype類(lèi)型的表插入帶有數據
insert into abc (id,xmldoc) value (abc.nextval ,sys.xmlType.createXML('<name><aid="1" value="somevalues">abc</a></name>'));
插入用 sys.xmlType.createXML('some xml doc')
3.直接查詢(xún)xmltype字段里面的內容
得到id=1的value變臉的值
select i.xmldoc.extract('//name/a[@id=1]/@value').getStringVal() asennames, id from abc i
得到a節點(diǎn)的值
select id, i.xmldoc.extract('//name/a/text()').getStringVal() astruename from abc i
得到節點(diǎn)id屬性的值
Selecthd.Data_t.extract('/root/name/@id').getStringVal()
4.更新xmltype里面的數據
update abc setxmldoc=updateXML(xmldoc,“//name/a[@id=1]/@value”,''some newvalue'') where ......
(注意:如果里面沒(méi)有<aid="1">這個(gè)節點(diǎn),將不能update)
Oracle 9i支持XMLType類(lèi)型,它是一種Oracle9i系統定義的對象類(lèi)型。XMLType有內置的函數,有力的提供了推XML的創(chuàng )建,索檢,索引等功能。
用戶(hù)可以使用SQL函數動(dòng)態(tài)的產(chǎn)生XML文檔。這些函數有:SYS_XMLGEN和SYS_XMLAGG和PL/SQL包DBMS_XMLGEN。
XML特性
描述
XMLType
1、XMLType是oracle系統定義的數據類(lèi)型,系統預定義了內部函數去訪(fǎng)問(wèn)XML數據??梢詧绦邢旅娴娜蝿?wù):
2、創(chuàng )建XMLType列,在XMLType列上面使用內置的函數。
創(chuàng )建PL/SQL函數和存儲過(guò)程,可以使用XMLType作為參數傳入,或者作為返回參數傳出。
3、在XMLType列上面存儲、索引、處理XML數據。
DBMS_XMLGEN
DBMS_XMLGEN是一個(gè)PL/SQL包,提轉換一個(gè)sql查詢(xún)的結果到標準的xml格式,返回的是一個(gè)XMLTye類(lèi)型或者是CLOB,DBMS_GEN是用c語(yǔ)言實(shí)現,放置在數據庫的內核中。DBMS_XMLGEN包和DBMS_XMLQuery包的功能相相似。
SYS_XMLGEN
XMLGEN是一個(gè)SQL函數,它用來(lái)在sql查詢(xún)中產(chǎn)生XML,DBMS_XMLGEN和其他包操作在查詢(xún)水平,
SYS_XMLGEN把一個(gè)值,對象類(lèi)型,XMLType實(shí)例轉換成一個(gè)XML文檔。SYS_XMLGEN返回的類(lèi)型是XMLType。
SYS_XMLAGG
SYS_XMLAGG 是一個(gè)聚合函數,它聚合在XMLType類(lèi)型上面。
SYS_XMLAGG聚合所有的輸入的XML文檔合片斷并且通過(guò)連接X(jué)ML片斷合增加上一層的標簽產(chǎn)生單個(gè)XML文檔
UriTypes
UriType類(lèi)型家族能夠在數據庫中存儲和查詢(xún)Ur-refs,SYS.UriType是一抽象的數據類(lèi)型,它提供功能去訪(fǎng)問(wèn)URL指向的數據。
SYS.HttpUriType和SYS.DBUriType是UriType的子類(lèi)型。SYS.HttpUriType存儲的是HTTPURLs,DBUriType存儲的是intra-database 參考。你可以定義自己的SYS.UriType的子類(lèi)型。
如何使用XMLType
創(chuàng )建XMLType列:
CREATE TABLE warehouses(
warehouse_id NUMBER(3),
warehouse_spec SYS.XMLTYPE,
warehouse_name VARCHAR2(35),
location_id NUMBER(4));
插入XMLType列數據
INSERT into warehouses (warehouse_id, warehouse_spec) VALUES (1001,sys.XMLType.createXML(
’<Warehouse whNo="100">
<Building>Owned</Building>
</Warehouse>’));
createXML的輸入參數可以是任何的返回為varch
ar2的表達式或者式CLOB。CreateXML能夠檢測XML是否的符合合適的,但是它不能檢查XML的有效性。
使用在XMLType列上sql查詢(xún)
SELECT
w.warehouse_spec.extract(''/Warehouse/Building/text()'').getStringVal()
"Building"
FROM warehouses w
warehouse_spec是一個(gè)XMLType列,
Extract()是操作在上面的函數
查詢(xún)結果如下:
Building
-----------------
Owned
更新XMLType的列
UPDATE warehouses SET warehouse_spec =
sys.XMLType.createXML(
’<Warehouse whono="200">
<Building>Leased</Building>
</Warehouse>’));
刪去XMLType的列
DELETE FROM warehouses e
WHEREe.warehouse_spec.extract(’//Building/text()’).getStringVal()
= ’Leased’;
聯(lián)系客服