我有可能不值得羡慕的任务,即编写数据迁移查询以使用将值添加到生产数据库的表中的新列的值填充现有记录。该表的地方大约有200,000行。当查询返回很多行时,Oracle extractValue失败
该值的来源位于存储在数据库中的某些XML中。我有一些XPath可以提取我想要的值,并且使用extractValue获取值似乎都很好,直到查询更新的记录数量开始变得比我在测试数据库中的数量更大。
一旦记录集增长到某个随机数量的大小,大约500行左右,然后我开始收到错误“ORA-19025:EXTRACTVALUE只返回一个节点的值”。考虑到数据库中有一些奇数行没有XPath的唯一结果,我试图限制查询中的记录以隔离坏记录。但是一旦我缩小了记录集,错误消失了。实际上没有任何行会为此XPath查询返回多个值。它看起来像extractValue发生了一些可怕的事情。
有没有人知道这件事?我不是SQL专家,甚至在SQL Server上花费的时间比Oracle多。所以如果我不能让这个工作,我想我留下来做一些与游标或什么搞乱。
任何建议/帮助?如果有帮助,我们在服务器上运行10g。谢谢!
+0
如果可能的话,添加一些代码(示例行,xpath,...)可能有助于调试问题 –
2009-06-15 09:42:21
+1
只有当extractvalue不对单个值进行操作时才会出现此错误。你可以使用extract()而不是extractvalue()来调试输出 –
2009-06-15 09:44:39