此代码提供“错误设置或注册参数”SQLException。有人可以帮忙吗?
OracleConnection conn = getAppConnection();
String q = "BEGIN INSERT INTO tb (id) values (claim_seq.nextval) returning id into :newId; end;" ;
CallableStatement cs = (OracleCallableStatement) conn.prepareCall(q);
cs.registerOutParameter("newId", OracleTypes.NUMBER);
cs.execute();
int newId = cs.getInt("newId");
答案 0 :(得分:1)
答案 1 :(得分:0)
更新:以下内容仅用于文档目的,但不是真正可用,因为必须按照sql String中指定的顺序设置命名参数。所以它有效,但非常容易出错。这是:
对于使用oracle jdbc驱动程序版本10的类似星座我有同样的错误,但是在将jdbc驱动程序升级到版本11之后它对我有用。版本12.x也可以。 我的代码看起来像这样:
int nextIdent;
String sql = "call pkg.do_insert(:NEXT_IDENT, :SOME_COL, ...)";
try (CallableStatement stmt = conn.prepareCall(sql)) {
stmt.registerOutParameter("NEXT_IDENT", Types.INTEGER);
stmt.setString("SOME_COL", "abc");
...
stmt.execute();
nextIdent = stmt.getInt("NEXT_IDENT");
}