2017-09-08 11 views
-1

私は[1,America,AA]の値を抽出することができますが、バンコクとカナダの値は1つのオブジェクトとして返され、oracle.sql.ARRAYを出力として取得するストアドプロシージャがあります。Javaのストアドプロシージャ

例:私は以下のコードを試してみました

1  
America  
AA  
Bangkok  
Canada 

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()); 
    } 
}   

出力:最後の属性はそう、明らかにoracle.sql.ARRAYデータ型です

1 
America 
AA 
oracle.sql.ARRAY 
+2

質問が不明です。 –

+0

私は彼が個々の属性として 'バンコク'と 'カナダ'を得る方法を知りたいと思うと思います。 – Sedrick

+0

[MCVE](https://stackoverflow.com/help/mcve)を作成してください。そうしないと、お手伝いできなくなります。 – Turing85

答えて

1

こと配列を取得して別々に処理する必要があります。

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()); 
     } 
    } 
} 
関連する問題