Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
223 views
in Technique[技术] by (71.8m points)

java - Return List<String> using Spring jdbc from Oracle stored procedure having custom object

I have created a custom table in Oracle as below and my stored procedure returning the list when test independently using test data.

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

But when I am trying to call this stored procedure using Java spring, I am not able to return the List<String>.

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

How can we return the custom list from Oracle in java?

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

Here is the simple Java method of doing this:

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

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...