Xquery 使用ora:view和XMLTable以XML形式查询关系表

Xquery 使用ora:view和XMLTable以XML形式查询关系表,xquery,xmltype,Xquery,Xmltype,我有一个名为DOCTYPES的Oracle关系表,其中包含ID、DOCTYPE和SUBTYPE列 在Oracle SQL Developer中运行以下语句时 SELECT * FROM XMLTable('for $i in ora:view("LAZ", "DOCTYPES")/ROW return $i/SUBTYPE') 我按预期返回标记之间的结果。但当我运行以下语句时,我得到一个错误: SELECT * FROM XMLTable('fo

我有一个名为DOCTYPES的Oracle关系表,其中包含ID、DOCTYPE和SUBTYPE列

在Oracle SQL Developer中运行以下语句时

SELECT * FROM XMLTable('for $i in ora:view("LAZ", "DOCTYPES")/ROW
                        return $i/SUBTYPE')
我按预期返回标记之间的结果。但当我运行以下语句时,我得到一个错误:

SELECT * FROM XMLTable('for $i in ora:view("LAZ", "DOCTYPES")/ROW
                        return <SUBTYPE="{$i/SUBTYPE}"/>')
SELECT*fromXMLTable('for$i in ora:view(“LAZ”,“DOCTYPES”)/行
返回')
LPX-00801:位于“=”的XQuery语法错误。我不明白为什么第二句话不起作用

非常感谢您事先提供的帮助。

语法错误

SELECT * FROM XMLTable('for $i in ora:view("LAZ", "DOCTYPES")/ROW
                    return <SUBTYPE="{data($i/SUBTYPE)}"/>')
SELECT*fromXMLTable('for$i in ora:view(“LAZ”,“DOCTYPES”)/行
返回')

我不知道Oracle如何看待XQuery,但撇号之间的语句显然在“=”处存在XQuery语法错误,因为IMO被正确诊断

这是因为您正在打开一个直接元素构造函数,但标记名后面的等号不正确。在直接元素构造函数中使用等号来分隔属性名称和属性值。因此,以下方法可能有效:

SELECT * FROM XMLTable('for $i in ora:view("LAZ", "DOCTYPES")/ROW
                        return <SUBTYPE name="{$i/SUBTYPE}"/>')
SELECT*fromXMLTable('for$i in ora:view(“LAZ”,“DOCTYPES”)/行
返回')

有关规范,请参阅。

中的。我使用中的示例作为参考。我相信它应该会起作用。如果这比原来的更好,那就“=”的语法错误而言,这将是令人惊讶的。正确,我错过了那里的属性。