我使用NamedParameterJdbcTemplate运行pl/sql脚本。但我不知道怎么才能得到 out变量(:id_out)。先谢谢你了。
String script = "declare
begin
if myFunc(:id_in) is null then
:id_out := 0;
else
:id_out := 1;
end if;
end;";
Map<String,Object> bindVars = new HashMap<String, Object>();
bindVars.put(id_in,1);
bindVars.put(id_out,2);
jdbcTmpl.execute(script, bindVars, new PreparedStatementCallback<Object>() {
@Override public Object doInPreparedStatement(PreparedStatement cs)
throws SQLException, DataAccessException {
cs.execute();
return null;
}
}
);
4条答案
按热度按时间gjmwrych1#
它可以用一个普通的JdbcTemplate来完成,如下面的示例所示,但是请注意,必须在匿名plsql块中用“?:= 'something';
下面使用的java参数:字符串id=“12345”和字符串fixSql=
请注意上面的两个问号-第一个实际上是IN参数,第二个是OUT参数。这段代码将调用它:
sdnqo3pr2#
我不相信您可以将NamedParameterJdbcTemplate(或JdbcTemplate的任何其他子类)与上述匿名PL/SQL块一起使用。您必须将匿名PL/SQL块 Package 到存储过程或函数中。
Spring旨在跨数据库进行移植。据我所知,MySQL和SQL Server都没有类似于Oracle的匿名PL/SQL块的概念(尽管我很高兴在这一点上被证明是错误的)。由于这个特性不能跨数据库移植,Spring不能真正只支持Oracle。
lmvvr0a83#
7vux5j2d4#
这在Spring Data中运行良好: