使用具有自定义对象的Oracle存储过程中的Spring jdbc返回List

我在Oracle中创建了一个自定义表,如下所示,我的存储过程在使用测试数据独立测试时返回列表。

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

但是当我尝试使用Java spring调用此存储过程时,我无法返回List

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

我们如何在java中从Oracle返回自定义列表?

这是执行此操作的简单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(); } } }