What is the equivalent of Oracle’s REF CURSOR in MySQL when using JDBC? What is the equivalent of Oracle’s REF CURSOR in MySQL when using JDBC? oracle oracle

What is the equivalent of Oracle’s REF CURSOR in MySQL when using JDBC?


Mysql has an implicit cursor that you can magically return from a stored procedure if you issue a select.

Here's an example:

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

and in your java code:

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


Googling on cursors in MySQL, it doesn't seem like you can actually return a Cursor from a Proc or Function. Additionally, I found the following in the MySQL JDBC manual:

"MySQL does not support SQL cursors, and the JDBC driver doesn't emulate them, so "setCursorName()" has no effect."

In general, I believe Oracle's implementation here breaks JDBC, and is not used elsewhere (MySQL, MSSQL, etc). You should be returning your results as a select statement and iterating over the JDBC ResultSet, as is standard (and intended) practice when using JDBC.


fill a temporary table in a procedure and just read the temporary table... :)