2017-02-12 4 views
-1

以下のようにOracleでカスタムテーブルを作成し、テストデータを使用して独自にテストするときはリストを返すストアドプロシージャを作成しました。リターンリスト<String>カスタムオブジェクトを持つOracleストアドプロシージャのSpring jdbcを使用

create or replace TYPE NAMELIST AS TABLE OF VARCHAR2(20); 

しかし、私は、Javaの春使用してこのストアドプロシージャを呼び出すためにしようとしていたとき、私はList<String>を返すことができないのです。

declareParameter(new SqlOutParameter('l_out', OracleTypes.ARRAY, 'NAMELIST', 
       new SqlReturnArray())); 

Javaからカスタムリストを返すにはどうすればよいですか?ここで

答えて

1

は、これを行うの単純なJavaメソッドです:

import java.sql.Connection; 
import java.sql.DriverManager; 
import java.sql.SQLException; 

import oracle.jdbc.OracleCallableStatement; 

public class TestDatabaseArray 
{ 
    public static void main(final String[] args) 
    { 
    try{ 
     Class.forName("oracle.jdbc.OracleDriver"); 

     Connection con = DriverManager.getConnection(
      "jdbc:oracle:thin:@localhost:1521:orcl", 
      "username", 
      "password" 
     ); 

     OracleCallableStatement st 
     =(OracleCallableStatement) con.prepareCall("{ call get_names(:out_array) }"); 

     st.registerOutParameter(1, java.sql.Types.ARRAY, "NAMELIST"); 

     st.execute(); 

     String[] names = (String[]) st.getARRAY(1).getArray(); 

     for (final String name : names) 
     System.out.println(name); 
    } 
    catch (ClassNotFoundException | SQLException ex) 
    { 
     System.out.println(ex.getMessage()); 
     ex.printStackTrace(); 
    } 
    } 
} 
関連する問題