मैंने डेटाग्रिप के साथ इस कथन में xmlsequence का उपयोग करने का प्रयास किया:

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)

लेकिन मुझे मिले चयन कथन से:

<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)

मुझे इंटरनेट में यह समस्या नहीं मिल रही है, इसलिए शायद यहां कोई जानता है कि मैं इसे कैसे हल कर सकता हूं? आपकी सहायता के लिए धन्यवाद

0
student123 18 जून 2020, 20:18

1 उत्तर

सबसे बढ़िया उत्तर

xmlsequence, extract और extractvalue फ़ंक्शन सभी बहिष्कृत हैं। फिलहाल आपको एक परिणाम मिल रहा है जो XMLSEQUENCETYPE प्रकार का एक संग्रह है, संग्रह के प्रत्येक तत्व के साथ एक शहर नोड। संभवतः यह वह संग्रह प्रकार है जिसके बारे में डेटाग्रिप खुश नहीं है।

आप इसके बजाय 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 क्वेरी से आउटपुट देख सकते हैं।

0
Alex Poole 18 जून 2020, 18:25