XMLTABLE
功能描述
将XML格式的数据转换为数据库表结构。
注意:
当前版本XMLTABLE仅支持在数据库单节点使用,暂不支持集群使用。
XML数据类型的详细信息请参见《SQL语法参考指南》的XML数据类型章节。
语法格式
XMLTABLE:
XMLTABLE ( xmltable_exprs [ alias_clause ] )
xmltable_exprs:
xmltable_exprs ::= XQuery_father PASSING XML_data COLUMNS xmltable_new_columns
xmltable_new_columns ::= xmltable_new_column | xmltable_new_columns, xmltable_new_column
xmltable_new_column ::= name TYPENAME PATH XQuery_child
参数说明
alias_clause
:可选,用于为XMLTABLE返回的结果集指定一个别名。XQuery_father
:父级XQuery表达式。XML_data
:XML数据。XQuery_child
:子XQuery表达式。name
:返回的表结构的字段名。
函数返回类型
TABLE类型。
示例
sql
-- 查询
SQL> CREATE TABLE test_xmltable(id INT,xml_col XML,insert_time DATE);
SQL> INSERT INTO test_xmltable VALUES(1,'<?xml version="1.0" encoding="UTF-8"?>
<bookstore>
<book category="COOKING">
<title lang="en">Everyday Italian</title>
<author>Giada De Laurentis</author>
<year>2005</year>
<price>30.00</price>
</book>
<book category="CHILDREN">
<title lang="en">Harry Potter</title>
<author>J K.Rowling</author>
<year>2005</year>
<price>29.99</price>
</book>
<book category="WEB">
<title lang="en">XQuery Kick Start</title>
<author>James McGovern</author>
<year>2003</year>
<price>49.99</price>
</book>
<book category="WEB">
<title lang="en">Learning XML</title>
<author>Erik T.RAY</author>
<year>2003</year>
<price>39.95</price>
</book>
</bookstore>
','2020-03-01');
SQL> SELECT t1.insert_time,t2."title",t2."author",t2."year",t2."price"
FROM test_xmltable t1,XMLTABLE(
'//book[@category="CHILDREN"]'
PASSING t1.xml_col
COLUMNS "title" VARCHAR PATH 'title',
"author" VARCHAR PATH 'author',
"year" VARCHAR PATH 'year',
"price" VARCHAR PATH 'price'
) t2
WHERE t1.id =1;
insert_time |title |author |year |price |
------------------------------------------------------------------------------
2020-03-01 |Harry Potter |J K.Rowling |2005 |29.99 |