我有一个名为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}"/>')
LPX-00801:'='处的XQuery语法错误。我不明白为什么第二个陈述不起作用。
非常感谢您的帮助。
答案 0 :(得分:0)
不知道Oracle对XQuery做了什么,但是撇号之间的语句显然在'='处有一个XQuery语法错误,因为IMO被正确诊断了。
这是因为您打开了直接元素构造函数,但标记名称后面的等号不正确。在直接元素构造函数内部使用等号来将属性名称与属性值分开。所以以下内容可能有效:
SELECT * FROM XMLTable('for $i in ora:view("LAZ", "DOCTYPES")/ROW
return <SUBTYPE name="{$i/SUBTYPE}"/>')
有关规范,请参阅3.7.1 Direct Element Constructors中的XQuery recommendation。
答案 1 :(得分:-1)
语法错误。
SELECT * FROM XMLTable('for $i in ora:view("LAZ", "DOCTYPES")/ROW
return <SUBTYPE="{data($i/SUBTYPE)}"/>')