gpt4 book ai didi

java - SimpleJdbcCall 中的多个输出参数

转载 作者:行者123 更新时间:2023-11-30 02:08:42 25 4
gpt4 key购买 nike

在Java spring boot框架中,尝试使用以下方法使用Store过程

 jdbcTemplate.setDataSource(dataSource);

SimpleJdbcCall simpleJdbcCall = new SimpleJdbcCall(jdbcTemplate)
.withSchemaName("abc")
.withFunctionName("proname")
.addDeclaredParameter(new
SqlOutParameter("",""));
Map<String, Object> map= new HashMap<>();
map.put("a",a);
map.put("b",b);
map.put("c",c);
map.put("d",d);

SqlParameterSource in = new MapSqlParameterSource(map);
Map<String, Object> out = simpleJdbcCall.execute(in);

但是我的程序也有参数,这是我的程序

function proname(z varchar2,
a varchar2,
b varchar2,
c varchar2,
d in out number,
e out number,
f out varchar2,
g out varchar2)

该过程也有输出参数,如上面的代码所示,问题是如何在简单 JDBC 调用中提及多个输出参数(注意多个)???

最佳答案

我尝试了以下方法并且有效:

jdbcTemplate.execute((CallableStatementCreator) con -> {
con = con.unwrap(OracleConnection.class);
CallableStatement cs = con.prepareCall("{ ? = call usr.abc.proname(?,?,?,?,?,?,?) }");
cs.registerOutParameter(1, OracleType.NUMBER);
cs.setString(2, "a");
cs.setString(3, "b");
cs.setString(4, "c");
cs.registerOutParameter(4, OracleType.NUMBER);
cs.registerOutParameter(5, OracleType.NUMBER);
cs.registerOutParameter(6, OracleType.VARCHAR);
cs.registerOutParameter(7, OracleType.VARCHAR);
return cs;
}, (CallableStatementCallback<MyModel>) cs -> {
cs.execute();
return new MyModel(cs.getInt(1),
cs.getInt(4),
cs.getInt(5),
cs.getString(6),
cs.getString(7));
});

关于java - SimpleJdbcCall 中的多个输出参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50713653/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com