gpt4 book ai didi

java - Oracle xmlsequence - java.sql.SQLException

转载 作者:行者123 更新时间:2023-12-01 16:13:48 25 4
gpt4 key购买 nike

我尝试在该语句中将 xmlsequence 与 datagrip 一起使用:

select xmlsequence(extract(river, '/river/cities/*'))
from river_xml
where extractValue(river, '/river/name/text()')='Rhein';

输出很好:

2020-06-18 19:09:36] 1 row retrieved starting from 1 in 38 ms (execution: 0 ms, fetching: 38 ms)

但是从我得到的 select 语句中:

<failed to load>
java.sql.SQLException: Interner Fehler: makeJavaArray doesn't support type 2007
at oracle.sql.ArrayDescriptor.makeJavaArray(ArrayDescriptor.java:1075)
at oracle.jdbc.oracore.OracleTypeCOLLECTION.unpickle81ImgBodyElements(OracleTypeCOLLECTION.java:571)
at oracle.jdbc.oracore.OracleTypeCOLLECTION.unpickle81ImgBody(OracleTypeCOLLECTION.java:527)
at oracle.jdbc.oracore.OracleTypeCOLLECTION.unpickle81(OracleTypeCOLLECTION.java:339)
at oracle.jdbc.oracore.OracleTypeCOLLECTION.unlinearizeInternal(OracleTypeCOLLECTION.java:235)
at oracle.jdbc.oracore.OracleTypeCOLLECTION.unlinearize(OracleTypeCOLLECTION.java:214)
at oracle.sql.ArrayDescriptor.toJavaArray(ArrayDescriptor.java:790)
at oracle.sql.ARRAY.getArray(ARRAY.java:301)
in JdbcHelperImpl.wrapIfNeeded(JdbcHelperImpl.java:461)

我在互联网上找不到这个问题,所以也许这里有人知道我该如何解决这个问题?感谢您的帮助

最佳答案

xmlsequenceextractextractvalue 函数均已弃用。目前,您得到的结果是 XMLSEQUENCETYPE 类型的单个集合,该集合的每个元素都是一个城市节点。据推测,DataGrip 不满意的是这种集合类型。

您可以使用 xmltable 来代替,这将为您提供每个城市一行的结果:

select x.*
from river_xml r
cross join xmltable(
'/river[name="Rhein"]/cities/city'
passing r.river
columns city xmltype path '.'
) x;

如果需要,您可以对其进行调整,以在单独的列中获取有关城市的信息,而不是作为 XMLType 值;这取决于您如何处理结果。

db<>fiddle似乎也不知道如何处理 XMLSEQUENCETYPE,这很公平;但您可以看到 XMLTable 查询的输出。

关于java - Oracle xmlsequence - java.sql.SQLException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62455733/

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