【发布时间】:2016-04-13 18:53:46
【问题描述】:
最近几天,我查看了一些其他人的代码,发现有很多 PL/SQL 函数返回 REF CURSOR。然后在 Java 中使用 CallableStatement 调用这些函数。
例如,在 PL/SQL 中可能有一个函数定义为:
FUNCTION FOO(a NUMBER) RETURN REF CURSOR IS
在 Java 中:
CallableStatement call = connection.prepareCall("{ ? = call foo(?) }");
call.registerOutParameter(1, OracleTypes.CURSOR);
call.setInt(2, 12345);
call.execute();
resultSet = (ResultSet)call.getObject(1);
while (resultSet.next()) {
与第二种方法相比 - 将查询植入 Java 中,不涉及 PL/SQL,我可以在这两种方法中看到专业人士:
- 使用 PL/SQL,它确实对 Java 开发人员隐藏了内部数据库表和结构,获得了某种封装;同样的函数也可以在 Java 和其他 PL/SQL 包中重用。
- 使用 Java,它对供应商的依赖性大大降低。
说了这么多,忽略开发团队的技能,会不会有性能差异,网络带宽差异?您可以分享任何见解和/或经验吗?
【问题讨论】:
标签: java oracle performance jdbc plsql