我正在使用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));
使用CallableStatement:
cs = conn.prepareCall(sql);
cs.setString(1, "myvalue");
cs.registerOutParameter(2, Types.VARCHAR);
cs.execute();
System.out.print(cs.getString(1));
谢谢, 代理
因为与正常输出参数相比,在返回子句中指定的参数的处理方式不同(GetReturnResultSet与GetResultSet与Calcalblestement中的返回参数相比)。
它们需要使用OraclePreparedStatement进行处理。在第二种情况下,当您将INSERT语句包装在Begin..end中时,INSERT由数据库本身处理,并且所有JDBC看到的都是一个匿名的plsql块。
http://docs.oracle.com/cd/E11882_01/java.112/e16548/oraint.htm#BABJJDDA
这篇关于Oracle&;‘s在Java中重新使用(JDBC,预准备语句)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持吉威生活!
[英文标题]Oracle's RETURNING INTO usage in Java (JDBC, Prepared Statement)
声明:本媒体部分图片、文章来源于网络,版权归原作者所有,如有侵权,请联系QQ:330946442删除。