oracle的XMLTABLE语法
时间: 2023-09-10 07:14:27 浏览: 52
XMLTABLE是Oracle数据库中用于查询XML数据的语法。
其基本语法如下:
```
XMLTABLE (
[ XMLNAMESPACES ... ]
{ XQuery-expression | XMLType-instance }
[ PASSING
{ BY VALUE | BY REFERENCE }
{ XMLType-instance | CLOB-expression | BLOB-expression }
]
COLUMNS column-definition [ , column-definition]...
)
```
其中,XMLNAMESPACES是可选的,用于指定XML文档中使用的命名空间。XQuery-expression或XMLType-instance是必需的,用于指定要查询的XML数据。PASSING子句是可选的,用于指定XML数据的传递方式。BY VALUE表示传递XML数据的值,BY REFERENCE表示传递XML数据的引用。XMLType-instance、CLOB-expression或BLOB-expression用于指定要传递的XML数据。COLUMNS子句用于指定要查询的列。
以下是一个使用XMLTABLE查询XML数据的示例:
```
SELECT *
FROM XMLTABLE(
'//book'
PASSING XMLTYPE(
'<catalog>
<book id="bk101">
<author>Gambardella, Matthew</author>
<title>XML Developer''s Guide</title>
<genre>Computer</genre>
<price>44.95</price>
<publish_date>2000-10-01</publish_date>
<description>An in-depth look at creating applications with XML.</description>
</book>
<book id="bk102">
<author>Ralls, Kim</author>
<title>Midnight Rain</title>
<genre>Fantasy</genre>
<price>5.95</price>
<publish_date>2000-12-16</publish_date>
<description>A former architect battles corporate zombies, an evil sorceress, and her own childhood to become queen of the world.</description>
</book>
</catalog>'
)
COLUMNS
book_id VARCHAR2(10) PATH '@id',
author VARCHAR2(100) PATH 'author',
title VARCHAR2(100) PATH 'title',
genre VARCHAR2(30) PATH 'genre',
price NUMBER(5,2) PATH 'price',
publish_date DATE PATH 'publish_date',
description VARCHAR2(4000) PATH 'description'
);
```
该示例使用XMLTABLE查询一个包含两本书的XML文档,并返回每本书的ID、作者、标题、类型、价格、出版日期和描述。