Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Oracle SQL中的XMLSEQUENCE()_Sql_Xml_Oracle - Fatal编程技术网

Oracle SQL中的XMLSEQUENCE()

Oracle SQL中的XMLSEQUENCE(),sql,xml,oracle,Sql,Xml,Oracle,我无法理解XMLSEQUENCE函数在Oracle中的用途。我使用的代码 Select XMLSEQUENCE(EXTRACT(Some_XML,Some_Xpath)) from dual; 假设我有一些XML <a> <b> <c> <d>4</d> </c> </b>

我无法理解XMLSEQUENCE函数在Oracle中的用途。我使用的代码

Select XMLSEQUENCE(EXTRACT(Some_XML,Some_Xpath)) from dual;
假设我有一些XML

           <a>
           <b>
           <c>
           <d>4</d>

           </c>
           </b>
           </a>
还有一些_Xpath='/'

现在我的问题是提取函数将返回

<b> <c> <d>4</d> </c> </b>
XMLSEQUENCE将对此XML执行什么操作并返回。

首先,您的xpath“/”格式不正确。尖括号不属于你

其次,xpath只会选择根节点不是根节点的任何内容。“//b”的xpath将选择XML中的每个节点,或者“/a/b”将选择根节点a的子节点的每个b节点

一旦修复了xpath,查询中的XMLSEQUENCE将把提取返回的XMLType转换为一个名为column_VALUE的XMLTypes单列表,提取返回的每个XML片段都有一条记录。对于XML,只有一个XML片段,因此表中只有一条记录

如果在外部select语句的FROM子句中对查询使用TABLE运算符,则可以看到结果:

select * from table(
select xmlsequence(extract(xmltype('<a>
<b>
<c>
<d>4</d>

</c>
</b></a>'),'/a/b')) from dual);

COLUMN_VALUE                                                                   
----------------------
<b><c><d>4</d></c></b>
如果xpath返回了多个节点,则会看到返回的多条记录:

select * from table(
select xmlsequence(extract(xmltype('<a>
<d>4</d>
<d>5</d>
<d>6</d>
</a>'),'/a/d')) from dual);

COLUMN_VALUE
------------
<d>4</d>
<d>5</d>
<d>6</d>

简言之,请让我知道如果传递XmlTypeSequence,XMLSEQUENCE会做什么假设我在变量“X”中有查询结果,并且我使用X.count;和X1.getclobval这两个调用将返回什么?