복붙노트

[SPRING] 사용자 정의 객체가있는 Oracle 저장 프로 시저에서 Spring jdbc를 사용하여 List <String> 반환

SPRING

사용자 정의 객체가있는 Oracle 저장 프로 시저에서 Spring jdbc를 사용하여 List 반환

아래에 오라클에서 사용자 정의 테이블을 만들고 테스트 데이터를 사용하여 독립적으로 테스트 할 때 목록을 반환하는 저장 프로 시저를 만들었습니다.

   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의 사용자 지정 목록을 어떻게 반환 할 수 있습니까?

해결법

  1. ==============================

    1.다음은이 작업을 수행하는 간단한 Java 메소드입니다.

    다음은이 작업을 수행하는 간단한 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();
        }
      }
    }
    
  2. from https://stackoverflow.com/questions/42190908/return-liststring-using-spring-jdbc-from-oracle-stored-procedure-having-custom by cc-by-sa and MIT license