Oracle XML Extract方法 - 表别名的要求

时间:2017-10-27 10:46:44

标签: sql xml oracle

我遇到一个奇怪的问题,即查询在表别名中完全正常,但在没有表格的情况下也不会。

所以,这应该是正常的:

select a.xml.extract('(//test/@id)[1]').getStringVal() from test_table a;

然而,这不起作用:

select xml.extract('(//test/@id)[1]').getStringVal() from test_table;

错误:

ORA-00904: "XML"."EXTRACT": invalid identifier
00904. 00000 -  "%s: invalid identifier"
*Cause:    
*Action:
Error at Line: 1 Column: 8

1 个答案:

答案 0 :(得分:0)

您可能会发现这可以不使用别名

select test_table.xml.extract('(//test/@id)[1]').getStringVal() from test_table;

正如另一条评论所说,xml.extract是一种对象方法。这意味着它不是可以从任何地方访问的函数,只能在处理表对象的特定实例时才能访问它。一个简单的解释是定义xml.extract的代码包含在定义表的代码中,因此没有表,没有xml.extract。

正如错误消息所示,当它自己被调用时,Oracle不知道xml.extract是什么。