使用 JDBC 时,Oracle 的 REF CURSOR 在 Postgresql 中的等价物是啥?

Posted

技术标签:

【中文标题】使用 JDBC 时,Oracle 的 REF CURSOR 在 Postgresql 中的等价物是啥?【英文标题】:What is the equivalent of Oracle's REF CURSOR in Postgresql when using JDBC?使用 JDBC 时,Oracle 的 REF CURSOR 在 Postgresql 中的等价物是什么? 【发布时间】:2010-09-10 09:33:03 【问题描述】:

在 Oracle 中我可以声明一个引用游标...

TYPE t_spool IS REF CURSOR RETURN spool%ROWTYPE;

...并使用它来传递一个游标作为返回值...

FUNCTION end_spool
    RETURN t_spool
    AS
    v_spool t_spool;
    BEGIN
        COMMIT;
        OPEN v_spool FOR
            SELECT
                *
            FROM
                spool
            WHERE
                key = g_spool_key
            ORDER BY
                seq;
        RETURN v_spool;
    END end_spool;

...然后使用 JDBC 将其捕获为结果集...

private Connection conn;
private CallableStatement stmt;
private OracleResultSet rset;
[...clip...]
stmt = conn.prepareCall(" ? = call " + call + "");
stmt.registerOutParameter(1, OracleTypes.CURSOR);
stmt.execute();
rset = (OracleResultSet)stmt.getObject(1);

Postgresql 中的等价物是什么?

【问题讨论】:

【参考方案1】:

也许这会有所帮助:http://jdbc.postgresql.org/documentation/83/callproc.html#callproc-resultset-setof

我之前并没有真正搞砸过:P

【讨论】:

以上是关于使用 JDBC 时,Oracle 的 REF CURSOR 在 Postgresql 中的等价物是啥?的主要内容,如果未能解决你的问题,请参考以下文章

使用 DBFactory 和 Oracle 存储过程 sys ref cursor 返回数据集

使用简单的 jdbc 调用将数组作为输入参数传递给 oracle 存储过程

在 user-service-ref 中使用 jdbc-user-service

ResultSet.next() 在使用 jdbc 与 oracle 11.2 交谈时挂起

将 Oracle 集合与瘦 JDBC 结合使用时的全球化问题

存在唯一索引时,Oracle 10g 和 11g 之间 REF CURSOR 的行为不同?