簡體   English   中英

Oracle xmlsequence - java.sql.SQLException

[英]Oracle xmlsequence - java.sql.SQLException

我嘗試在此語句中使用 xmlsequence 和 datagrip:

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

output 很好:

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 查詢中看到 output。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM