返回列表< String>使用具有自定义对象的Oracle存储过程中的Spring jdbc [英] Return List<String> using Spring jdbc from Oracle stored procedure having custom object
本文介绍了返回列表< String>使用具有自定义对象的Oracle存储过程中的Spring jdbc的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我已经在Oracle中如下创建了一个自定义表,并且我的存储过程在使用测试数据进行独立测试时返回了该列表.
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);
但是当我尝试使用Java spring调用此存储过程时,我无法返回List<String>
.
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()));
我们如何从Java中的Oracle返回自定义列表?
How can we return the custom list from Oracle in java?
推荐答案
这是执行此操作的简单Java方法:
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();
}
}
}
这篇关于返回列表< String>使用具有自定义对象的Oracle存储过程中的Spring jdbc的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文