2017-09-08 2 views
-1

Ich habe eine gespeicherte Prozedur, die Ausgabe als Sammlungsobjekt wie folgt ergibt. Ich bin in der Lage, Werte von [1,America,AA] zu extrahieren, aber die Werte Bangkok und Canada werden als ein Objekt zurückgegeben und beim Drucken bekomme ich oracle.sql.ARRAY als Ausgabe.Gespeicherte Prozedur in Java

Beispiel:

1  
America  
AA  
Bangkok  
Canada 

ich den Code unten versucht:

if(Statement.getObject(Index)!=null){ 
    Data= (Object[]) ((Array) Statement.getObject(Index)).getArray(); 
    Object[] Data=null; 
    Data= (Object[]) ((Array) Statement.getObject(Index)).getArray(); 
    int i=0; 
    Struct row = (Struct) Data[i];  
    for (Object attribute : row.getAttributes()){ 
       System.out.println(attribute.toString()); 
    } 
}   

Ausgang:

1 
America 
AA 
oracle.sql.ARRAY 
+2

Ihre Frage ist nicht klar. –

+0

Ich denke, er möchte wissen, wie man 'Bangkok' und' Kanada' als individuelle Attribute bekommt. – Sedrick

+0

Bitte erstellen Sie ein [MCVE] (https://stackoverflow.com/help/mcve), sonst können wir nicht helfen. – Turing85

Antwort

1

Das letzte Attribut ist offensichtlich ein oracle.sql.ARRAY Datentyp, so Sie müssen das Array erhalten und separat verarbeiten.

if(Statement.getObject(Index)!=null){ 
    Data= (Object[]) ((Array) Statement.getObject(Index)).getArray(); 
    Object[] Data=null; 
    Data= (Object[]) ((Array) Statement.getObject(Index)).getArray(); 
    int i=0; 
    Struct row = (Struct) Data[i]; 
    for (Object attribute : row.getAttributes()){ 
     if (attribute instanceof oracle.sql.Array){ 
      // process the array, I didn't check this code YMMV 
      String[] countries = (String[])attribute.getArray(); 
      for (String country : countries){ 
       System.out.println(country); 
      } 
     } else { 
      System.out.println(attribute.toString()); 
     } 
    } 
}