gpt4 book ai didi

sql - 当查询返回多行时,Oracle extractValue 失败

转载 作者:行者123 更新时间:2023-12-01 00:06:50 24 4
gpt4 key购买 nike

我有一项可能令人羡慕的任务,即编写数据迁移查询以使用添加到生产数据库表中的新列的值填充现有记录。该表的某处大约有 200,000 行。

值的来源是一些存储在数据库中的 XML。我有一些 XPath 可以提取我想要的值,并且使用 extractValue 来获取值似乎都很好,直到查询更新的记录数开始变得比我在测试数据库中拥有的记录数大。

一旦记录集增长到某个随机大小,大约 500 行,然后我开始收到错误“ORA-19025:EXTRACTVALUE 仅返回一个节点的值”。确定数据库中有一些奇怪的行没有 XPath 的唯一结果,我试图限制查询中的记录以隔离坏记录。但是一旦我缩小了记录集,错误就消失了。对于此 XPath 查询,实际上没有一行会返回多个值。看起来extractValue 发生了一些可疑的事情。

有人对这个有了解吗?我不是 SQL 专家,即便如此,我在 SQL Server 上花费的时间也比 Oracle 多。因此,如果我无法使其正常工作,我想我将不得不处理光标或其他事情。

任何建议/帮助?如果有帮助,我们将在服务器上运行 10g。谢谢!

最佳答案

几乎可以肯定,源 XML 表中至少有一行具有无效值。重写查询以尝试找到它。

例如,使用 XMLPath 谓词可以为您提供第二个位置的节点(我目前无法访问带有 XML 对象的数据库,因此我不能保证以下内容在语法上是完美的):

  SELECT SourceKey
, EXTRACTVALUE(SourceXML, '/foo/bar/baz[1]')
, EXTRACTVALUE(SourceXML, '/foo/bar/baz[2]')
FROM SourceTable
WHERE EXTRACTVALUE(SourceXML, '/foo/bar/baz[2]') IS NOT NULL;

关于sql - 当查询返回多行时,Oracle extractValue 失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/995229/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com