【问题标题】:Return List<String> using Spring jdbc from Oracle stored procedure having custom object从具有自定义对象的 Oracle 存储过程中使用 Spring jdbc 返回 List<String>
【发布时间】:2017-06-30 15:53:59
【问题描述】:

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

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

但是当我尝试使用 Java spring 调用这个存储过程时,我无法返回 List&lt;String&gt;

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

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

【问题讨论】:

    标签: java spring oracle stored-procedures jdbc


    【解决方案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();
        }
      }
    }
    

    【讨论】:

      猜你喜欢
      • 2019-05-01
      • 1970-01-01
      • 2012-09-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-02
      • 2011-02-09
      • 1970-01-01
      相关资源
      最近更新 更多