【问题标题】:Alternative to using a REF CURSOR in JDBC or Spring JDBC?在 JDBC 或 Spring JDBC 中使用 REF CURSOR 的替代方法?
【发布时间】:2012-10-10 16:16:16
【问题描述】:

我已经用谷歌搜索了一下,在这里搜索并没有找到答案。

在将 PL/SQL 中的数据从数据库返回到 Java(使用 Spring JDBC)时,是否有替代使用 REF CURSOR 的方法?

我工作的 DBA 讨厌 REF CURSORS,因为(他们说)出错的可能性更大,如果我们返回 CURSOR 或 TYPES,他们更愿意。

有谁知道这是否可行,如果可以,怎么做?

提前致谢。

【问题讨论】:

  • 返回游标和引用游标之间没有区别——它们是完全相同的两个术语。 DBA 是否可能反对使用弱类型 SYS_REFCURSOR 而不是强类型游标?他们究竟是在建议你返回什么样的TYPE?我们是在谈论创建流水线表函数而不是返回游标的函数吗?实现并返回整个集合而不是使用游标?还有什么?
  • 是的,这可能是因为它们是弱类型而不是强类型。感谢您的信息和问题。它让我深思,足以让我回到 DBA 和 Google。

标签: java oracle spring


【解决方案1】:

您的 DBA 绝对正确地讨厌游标:它们可能会泄漏、带来安全风险,并且具有笨拙的嘈杂语法。流水线(表)函数比游标更好的抽象。

流水线函数输出与普通表/视图没有区别。 Java 客户端在执行标准 SQL 查询时将使用相同的 JDBC API 调用。同样,对于 PL/SQL,流水线函数仍然隐藏在 SQL 查询中,因此不需要特殊的数据类型。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-05-05
    • 1970-01-01
    • 2016-01-28
    • 2010-09-10
    • 1970-01-01
    • 1970-01-01
    • 2018-01-04
    相关资源
    最近更新 更多