2017-02-12 1 views
-1

Я создал пользовательскую таблицу в Oracle, как показано ниже, и мою хранимую процедуру, возвращающую список при независимом тестировании с использованием тестовых данных.Список возвратов <String> с использованием Spring jdbc из хранимой процедуры Oracle с настраиваемым объектом

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

Но когда я пытаюсь вызвать эту хранимую процедуру с помощью Java весной, я не в состоянии вернуть List<String>.

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

Как мы можем вернуть пользовательский список из Oracle в 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(); 
    } 
    } 
} 
Смежные вопросы