您好,登錄后才能下訂單哦!
這篇文章主要講解了“PLSQL中XML類型字段分析”,文中的講解內(nèi)容簡(jiǎn)單清晰,易于學(xué)習(xí)與理解,下面請(qǐng)大家跟著小編的思路慢慢深入,一起來(lái)研究和學(xué)習(xí)“PLSQL中XML類型字段分析”吧!
xmltype:
Oracle9i 支持一種新的系統(tǒng)定義數(shù)據(jù)類型,名為XMLType。XMLType提供了多種內(nèi)建的成員函數(shù),為創(chuàng)建、提取和索引存儲(chǔ)在Oracle9i中的XML數(shù)據(jù) 提供了一種強(qiáng)有力的機(jī)制。作為一種新的數(shù)據(jù)類型,XMLType可用作表格和視圖中的各個(gè)列的數(shù)據(jù)類型,并可在PL/SQL存儲(chǔ)過(guò)程中作為參數(shù)、返回值和 變量使用。
利用XMLType和這些功能,SQL開發(fā)者既可利用關(guān)系型數(shù)據(jù)庫(kù)的強(qiáng)大能力,也可在XML的環(huán)境下工作。與此類似,XML開發(fā)者一方面可利用XML標(biāo)準(zhǔn)的強(qiáng)大能力,另一方面又能在關(guān)系型數(shù)據(jù)庫(kù)的環(huán)境下工作。
建立含有xmltype數(shù)據(jù)類型的表
CREATE TABLE abc (id number, xmldoc sys.xmltype);
聲明xmltype型字段用:sys.xmltype
向帶有xmltype類型的表插入帶有數(shù)據(jù)
INSERT INTO abc (id ,xmldoc) VALUE (abc.nextval ,sys.xmltype.createxml('<name><aid="1" value="some values">abc</a></name>'));
插入用 sys.xmlType.createXML('some xml doc')
直接查詢xmltype字段里面的內(nèi)容
得到id=1的value變量的值
SELECT i.xmldoc.extract('//name/a[@id=1]/@value').getstringval() AS ennames ,id FROM abc i
得到a節(jié)點(diǎn)的值
SELECT id ,i.xmldoc.extract('//name/a/text()').getstringval() AS truename FROM abc i
得到節(jié)點(diǎn)id屬性的值
SELECT hd.data_t.extract('/root/name/@id').getstringval() AS NAME FROM sehr_house_data hd
更新xmltype里面的數(shù)據(jù)
UPDATE abc SET xmldoc = updatexml(xmldoc, '//name/a[@id=1]/@value', 'some new value') WHERE ......
(注意:如果里面沒有<aid="1">這個(gè)節(jié)點(diǎn),將不能update)
添加超過(guò)4k字節(jié)的xml文檔到xmltype型字段
可以通過(guò)使用臨時(shí)表的辦法實(shí)現(xiàn):
先建立一個(gè)臨時(shí)的表,其中的一個(gè)字段是clob類型;
再將要寫入xmltype字段的xml doc寫入這個(gè)臨時(shí)的clob型的字段中;
最后insertinto abc (id,xmldoc) values (abc_q.nextval , sys.xmlType.createXML((select contentfrom 臨時(shí)表whereid=......)));
EXISTSNODE --EXISTSNODE函數(shù)檢查XML中的某一個(gè)節(jié)點(diǎn)是否存在。如果存在,返回1,否則返回0。 SELECT existsnode(VALUE(a), 'Corporation/Name') FROM TABLE(xmlsequence(extract(v_xml, 'Root/Corporation'))) a; SELECT COUNT(*) FROM TABLE(xmlsequence(extract(v_xml, 'Root/Corporation'))) a WHERE existsnode(xmlvalue, 'Corporation/Name[@id=1]') = 1; EXTRACTVALUE --EXTRACTVALUE()是從某個(gè)節(jié)點(diǎn)中讀取值。ExtractValue只能返回一個(gè)確切的位置節(jié)點(diǎn)的值,如果存在多個(gè)相同節(jié)點(diǎn),Oracle就會(huì)報(bào)錯(cuò) 。 SELECT extractvalue(VALUE(a), 'Corporation/Name') cor_nam FROM TABLE(xmlsequence(extract(v_xml, 'Root/Corporation'))) a; EXTRACT --EXTRACT函數(shù)返回一個(gè)XML文檔的一個(gè)節(jié)點(diǎn)樹,或者某一節(jié)點(diǎn)下所有符合條件的節(jié)點(diǎn)。 SELECT extract(VALUE(a), 'Corporation/Persons/Person') cor_person FROM TABLE(xmlsequence(extract(v_xml, 'Root/Corporation'))) a; Xmlsequence、TABLE --利用xmlsequence()和table()返回符合條件的節(jié)點(diǎn)的值 。 SELECT extract(VALUE(a), 'Corporation/Persons/Person') cor_person FROM TABLE(xmlsequence(extract(v_xml, 'Root/Corporation'))) a; 實(shí)例: SELECT sys.xmltype.createxml(t.value1).extract('//TResponse/OrderInfo/OrderInfos/text()') .getclobval() FROM abc t
感謝各位的閱讀,以上就是“PLSQL中XML類型字段分析”的內(nèi)容了,經(jīng)過(guò)本文的學(xué)習(xí)后,相信大家對(duì)PLSQL中XML類型字段分析這一問(wèn)題有了更深刻的體會(huì),具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是億速云,小編將為大家推送更多相關(guān)知識(shí)點(diǎn)的文章,歡迎關(guān)注!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。