【筆記】oracle xml (一)
--090419xml.sql 113
--test xml files:test1.xml
xsi:noNamespaceSchemaLocation="http://www.oracle.com/xdb/po.xsd">
Redwood Shores, CA 94065
--test.xml
--test xmltype
create sequence comm_seq
start with 1
increment by 1
maxvalue 9999999
minvalue 1
cache 10;
CREATE TABLE t_test_xml_Example1
(
KEYVALUE varchar2(10) primary key,
XMLCOLUMN xmltype
);
CREATE TABLE t_test_xml_XMLTABLE OF XMLType;
CREATE TABLE t_test_xml_XMLTABLE1 OF XMLType;
create or replace directory D_DIR
as 'E:\oracle\ora92\xml\';
create or replace directory D_DIR_EXP
as 'E:\oracle\ora92\exp\tuning';
create or replace function f_getClobDocument(filename in varchar2,
charset in varchar2 default NULL)
return CLOB deterministic is
file bfile := bfilename('D_DIR', filename);
charContent CLOB := ' ';
targetFile bfile;
lang_ctx number := DBMS_LOB.default_lang_ctx;
charset_id number := 0;
src_offset number := 1;
dst_offset number := 1;
warning number;
begin
if charset is not null then
charset_id := NLS_CHARSET_ID(charset);
end if;
targetFile := file;
DBMS_LOB.fileopen(targetFile, DBMS_LOB.file_readonly);
DBMS_LOB.LOADCLOBFROMFILE(charContent,
targetFile,
DBMS_LOB.getLength(targetFile),
src_offset,
dst_offset,
charset_id,
lang_ctx,
warning);
DBMS_LOB.fileclose(targetFile);
return charContent;
end;
INSERT INTO t_test_xml_XMLTABLE
VALUES
(XMLTYPE(f_getClobDocument('test.xml')));
INSERT INTO t_test_xml_XMLTABLE1
VALUES
(XMLTYPE(f_getClobDocument('test1.xml')));
insert into t_test_xml_Example1
values
(comm_seq.nextval, XMLTYPE(f_getClobDocument('test.xml')));
commit;
--
--if the existsNode then return 1 ,else return 0
SELECT existsNode(value(X), '/root/book/name') FROM t_test_xml_XMLTABLE X;
SELECT count(*)
FROM t_test_xml_XMLTABLE x
WHERE existsNode(value(x), '/root/book') = 1;
SELECT extractValue(value(x), '/root/book/name')
FROM t_test_xml_XMLTABLE X;
SELECT existsNode(value(X),
'/PurchaseOrder/LineItems/LineItem[2]/Part[@Id = "037429135020"]')
FROM t_test_xml_XMLTABLE1 X;
SELECT existsNode(value(X),
'/ PurchaseOrder / LineItems / LineItem
[Description = "8 1/2"]')
FROM t_test_xml_XMLTABLE1 X;
SELECT count(*)
FROM t_test_xml_XMLTABLE1 x
WHERE existsNode(value(x), '/PurchaseOrder[User="ADAMS"]') = 1;
DELETE FROM t_test_xml_XMLTABLE1 x
WHERE existsNode(value(x), '/PurchaseOrder[User="ADAMS"]') = 1;
SELECT extractValue(value(x), '/PurchaseOrder/Reference') FROM t_test_xml_XMLTABLE1 X;
--extractValue only return one value
SELECT extractValue(value(X),
'/PurchaseOrder/LineItems/LineItem/Description')
FROM t_test_xml_XMLTABLE1 X;
--Using extractValue() in the WHERE Clause
SELECT extractValue(value(x), ' / PurchaseOrder / Reference')
FROM t_test_xml_XMLTABLE1 X, SCOTT.EMP
WHERE extractValue(value(x), ' / PurchaseOrder / User') = EMP.ENAME
AND EMP.EMPNO = 7876;
--extract() is used when the XPath expression will result in
--a collection of nodes being returned.
SELECT extract(value(X),
' / PurchaseOrder / LineItems / LineItem / Description')
FROM t_test_xml_XMLTABLE1 X;
SELECT extract(value(x), '/PurchaseOrder/Reference') FROM t_test_xml_XMLTABLE1 X;
--Using XMLSequence()
--XMLSequence() takes an XMLType containing a
--document fragment and returns a collection of XMLType objects.
SELECT extractValue(value(t), '/Description')
FROM t_test_xml_XMLTABLE1 X,
TABLE(xmlsequence(extract(value(X),
'/PurchaseOrder/LineItems/LineItem/Description'))) t;
--result:
EXTRACTVALUE(VALUE(T),'/DESCRI..'
1 The Ruling Class
2 Diabolique
3 8 1/2
--update xml use updateXML
SQL> UPDATE t_test_xml_XMLTABLE1 t
2 SET value(t) = updateXML(value(t),
3 '/PurchaseOrder/Reference/text()',
4 'MILLER-200203311200000000PST')
5 WHERE existsNode(value(t),
6 '/PurchaseOrder[Reference="ADAMS-20011127121040988PST"]') = 1;
1 row updated
UPDATE t_test_xml_XMLTABLE1 t
SET value(t) = updateXML(value(t),
'/PurchaseOrder/LineItems/LineItem[2]',
xmltype('
WHERE existsNode(value(t),
'/PurchaseOrder[Reference="MILLER-200203311200000000PST"]') = 1;
SELECT value(t) FROM t_test_xml_XMLTABLE1 t;
--some others xmltype functions
createXML();
isFragment();
getClobVal();
getRootElement();
getNameSpace();
insert into t_test_xml_XMLTABLE1
values
(Xmltype.createXML('
select value(t).getRootElement() FROM t_test_xml_XMLTABLE1 t;
select value(t).isFragment() FROM t_test_xml_XMLTABLE1 t;
select value(t).getClobVal() FROM t_test_xml_XMLTABLE1 t;
select value(t).getNameSpace() FROM t_test_xml_XMLTABLE1 t;
--Using XML Schema with Oracle XML DB
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/16179598/viewspace-590956/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- xml筆記XML筆記
- 解析xml筆記XML筆記
- 《無廢話XML》的一點筆記XML筆記
- oracle學習筆記《一》Oracle筆記
- oracle一些工作筆記Oracle筆記
- oracle 原理學習筆記(一)Oracle筆記
- XML學習筆記(一):關於字元編碼的理解XML筆記字元
- XML學習筆記–背誦版XML筆記
- 【Go學習筆記16】解析xmlGo筆記XML
- oracle筆記Oracle筆記
- oracle 筆記Oracle筆記
- JSP筆記-XML 資料處理JS筆記XML
- Oracle學習筆記(一)---oracle安裝和配置Oracle筆記
- ORACLE 10G OCA 042 筆記(一)Oracle 10g筆記
- oracle學習筆記零碎(一)Oracle筆記
- CONCEPT筆記(一、Introduction to the Oracle Database)筆記OracleDatabase
- spring上 -基於Xml配置bean筆記SpringXMLBean筆記
- CUUG筆記 ORACLE索引學習筆記筆記Oracle索引
- Mybatis 學習筆記(一)——配置檔案SqlMapConfig.xml和對映檔案Mapper.xmlMyBatis筆記SQLXMLAPP
- 《Oracle DBA工作筆記》第一章Oracle筆記
- ORACLE學習筆記--效能最佳化一Oracle筆記
- 1.xml程式設計(我的JavaEE筆記)XML程式設計Java筆記
- XML初學進階學習筆記(1)(轉)XML筆記
- XML初學進階學習筆記(5)(轉)XML筆記
- XML初學進階學習筆記(4)(轉)XML筆記
- XML初學進階學習筆記(3)(轉)XML筆記
- XML初學進階學習筆記(2)(轉)XML筆記
- oracle 學習筆記 (ORACLE NET )Oracle筆記
- 傳智播客PHP2015-XML視訊教程 XML-01-xml介紹 筆記PHPXML筆記
- oracle 筆記(續1)Oracle筆記
- ORACLE dataguar 配置筆記Oracle筆記
- Secrets of the Oracle Database筆記OracleDatabase筆記
- oracle學習筆記Oracle筆記
- oracle雜燴筆記Oracle筆記
- Oracle 常用SQL筆記OracleSQL筆記
- 筆記一筆記
- 整理的一些oracle備份筆記 (zt)Oracle筆記
- [oracle零碎筆記]oracle零碎筆記(持續更新…)Oracle筆記