Support for multiple result sets

Registered by Geert JM Vanderkelen

MySQL can return 0 or more result sets after a stored procedure has been called. MyConnPy needs to be able to read them and make them available.

Blueprint information

Status:
Complete
Approver:
Geert JM Vanderkelen
Priority:
Undefined
Drafter:
Geert JM Vanderkelen
Direction:
Needs approval
Assignee:
Geert JM Vanderkelen
Definition:
Approved
Series goal:
Accepted for trunk
Implementation:
Implemented
Milestone target:
milestone icon 0.1.4
Started by
Geert JM Vanderkelen
Completed by
Geert JM Vanderkelen

Whiteboard

Calling a stored procedure can produce multiple result sets. They should be retrieved and made available to the application.
MySQLdb is using the Cursor nextset()-method to go through multiple result sets. If the stored procedure returns a multiple results, it will require you to get all sets. For example, using MySQLdb, you'll have to do the following when procedure 'multi' returns 2 sets:

 # using MySQLdb
 cur.callproc("multi", (5, 6, 0))
 cur.nextset()
 cur.nextset()
 cur.execute("SELECT @_multi_0,@_multi_1,@_multi_2")
 row = cur.fetchone() # == (5L, 6L, 30L)

In Connector/Python we might do it a bit easier, buffering the multiple sets returned and using the fetch-methods to get the results:

 # using MySQL Connector/Python
 cur.callproc("multi", (5,6,0))
 row = cur.fetchone() == ('5', '6', 30)

If the application needs the other results, it can get them using next_proc_resultset() this method returns a MySQLCursorBuffered object which holds the result:

 # using MySQL Connector/Python
 result = cur.callproc("multi", (5,6,0))
 cursor_set1 = cur.next_proc_resultset()
        rows = cur.fetchall()

(?)

Work Items

This blueprint contains Public information 
Everyone can see this information.

Subscribers

No subscribers.