Support for multiple result sets
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:
- 0.1.4
- Started by
- Geert JM Vanderkelen
- Completed by
- Geert JM Vanderkelen
Related branches
Related bugs
Bug #569254: Need support for multiple result sets returned by stored procedures | Fix Released |
Sprints
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(
cur.nextset()
cur.nextset()
cur.execute(
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(
row = cur.fetchone() == ('5', '6', 30)
If the application needs the other results, it can get them using next_proc_
# using MySQL Connector/Python
result = cur.callproc(
cursor_set1 = cur.next_
rows = cur.fetchall()