我正在使用JDBC执行Oracle语句,如下所示:
"INSERT INTO MYTABLE(MYDATA) VALUES(?) RETURNING MY_CALCULATED_DATA INTO ?"
// MYTABLE's def makes MY_CALCULATED_DATA be auto-generated by DB on insert
我找到了在Java中调用上述语句的几种方法,主要是:
使用OraclePreparedStatement的
ps = (OraclePreparedStatement)conn.prepareStatement(sql);ps.setString(1,"myvalue");ps.registerReturnParameter(2,Types.VARCHAR);ps.execute();rs = ps.getReturnResultSet();rs.next();System.out.print(rs.getString(1));
cs = conn.prepareCall(sql);cs.setString(1,"myvalue");cs.registerOutParameter(2,Types.VARCHAR);cs.execute();System.out.print(cs.getString(1));
问题:
如果我将语句封装到"BEGIN..END;“中,方法#2抛出"SQLException: Not all return parameters ”,而不是-那么方法#2工作得很好。为什么方法#1没有"BEGIN..END“就可以工作,但是方法#2需要"BEGIN..END”才能工作?
谢谢,AG。
https://stackoverflow.com/questions/17320205
复制相似问题