当前位置:  开发笔记 > 编程语言 > 正文

使用JDBC时,MySQL中的Oracle REF CURSOR相当于什么?

如何解决《使用JDBC时,MySQL中的OracleREFCURSOR相当于什么?》经验,为你挑选了1个好方法。

在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);

MySQL中的等价物是什么?



1> Yoni..:

Mysql有一个隐式游标,如果你发出一个select,你可以从存储过程中神奇地返回.

这是一个例子:

CREATE PROCEDURE `TEST`()
MODIFIES SQL DATA
BEGIN
  SELECT * FROM test_table;
END;

在你的java代码中:

String query = "{CALL TEST()}";
CallableStatement cs = con.prepareCall(query,
    ResultSet.TYPE_SCROLL_INSENSITIVE,
    ResultSet.CONCUR_READ_ONLY);
ResultSet rs = cs.executeQuery();

推荐阅读
135369一生真爱_890
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有