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