Sql Oracle XML提取方法-表别名要求
我遇到了一个奇怪的问题,查询在使用表别名时绝对可以正常工作,但在没有别名时却不行 因此,这是应该的:Sql Oracle XML提取方法-表别名要求,sql,xml,oracle,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 ide
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
您可能会发现,这在不使用别名的情况下有效
select test_table.xml.extract('(//test/@id)[1]').getStringVal() from test_table;
正如另一条评论所说,xml.extract是一种对象方法。这意味着它不是一个可以从任何地方访问的函数,它只能在处理表对象的特定实例时访问。一个简单的解释是,定义xml.extract的代码包含在定义表的代码中的某个地方,因此没有表,也没有xml.extract
正如错误消息所示,当Oracle单独调用它时,它不知道xml.extract是什么。xml.extract()
是一种对象方法,需要别名。这记录在。然而,我不明白这其中的技术原因。