java - 在Spring中调用Oracle过程以使用SimpleJdbcCall返回行

原文 标签 java spring spring-mvc oracle11g

我写了下面的代码

       MapSqlParameterSource in = new MapSqlParameterSource();
       in.addValue("V_OPP_ID", bean.getOpportunityId());
       in.addValue("V_NAME",bean.getName());
       in.addValue("V_FROM_DATE", bean.getStdate());
       in.addValue("V_TO_DATE", bean.getEddate());
       in.addValue("V_USERTYPE", bean.getUserType());
       jdbcCall.execute(in);


在这里,jdbcCall.execute(in)返回与Arraylist对应的结果集/表。我如何提取此ArrayList

使用jdbcCall是正确的方法吗?如果不是,建议什么?

最佳答案

这是我用于调用函数的代码:

RowMapper<String> rm = new ParameterizedRowMapper<String>() {
    @Override
    public String mapRow(ResultSet rs, int rowNum) throws SQLException {
        return rs.getString(1);
    }
};
myStoredProcedure = new SimpleJdbcCall(DataSourceConnection.getDataSource())
        .withCatalogName("PACKAGE")
        .withFunctionName("GET_ALIAS")
        .returningResultSet("return", rm);

MapSqlParameterSource params = new MapSqlParameterSource();
params.addValue("P_ID",userStr);
params.addValue("P_DOMAIN_ALIAS", domain[0]);
List<String> list = myStoredProcedure.executeFunction(List.class,params);


如果您无法使用元数据,则代码如下:

RowMapper<String> rm = new ParameterizedRowMapper<String>() {
    @Override
    public String mapRow(ResultSet rs, int rowNum) throws SQLException {
        return rs.getString(1);
    }
};
SqlParameter emailParam = new SqlParameter("P_ID", OracleTypes.VARCHAR);
SqlParameter domainParam = new SqlParameter("P_DOMAIN_ALIAS", OracleTypes.VARCHAR);
SqlOutParameter resultParam = new SqlOutParameter("return", OracleTypes.CURSOR);
myStoredProcedure = new SimpleJdbcCall(DataSourceConnection.getDataSource())
        .withCatalogName("PACKAGE")
        .withFunctionName("GET_ALIAS")
        .withoutProcedureColumnMetaDataAccess()
        .returningResultSet("return", rm)
        .declareParameters(resultParam, emailParam, domainParam);

MapSqlParameterSource params = new MapSqlParameterSource();
params.addValue("P_ID",userStr);
params.addValue("P_DOMAIN_ALIAS", domain[0]);
List<String> list = myStoredProcedure.executeFunction(List.class,params);

关于java - 在Spring中调用Oracle过程以使用SimpleJdbcCall返回行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18865531/

相关文章:

java - Firestore在recyclerview中检索具有限制的文档

c# - 如果索引比C#中的字符串高,则与Java的子字符串有什么相似?

java - Android Java是否支持泛型类型的原始类型参数?

java - 如何使异步注释在 Spring Boot 中工作?

spring-mvc - Spring MVC : Append new line to each response

java - Spring Security 安全自定义页面

java - 无法在Windows中使用bat文件启动tomcat

java - 如何将 applicationContext.xml 中的对象转换为 java 注释

spring - 如何在 Spring-MVC 中注册全局自定义编辑器?

java - Spring MVC注解配置问题