As is understand SP can only one resultset (the first) and no output params.
Concerning this point (sorry, I don't use SP in mySQL), but with other server databases, the output variables sets constitute the iterable recordset sent back towards the client program (client which will call "while not SP.eof do call SP.next and do stuff").
The difference is that in a SP, it's possible to use different kind of back-end variables like implicite or explicit cursors variables, input parameters variables, local variables, and output parameters. AFAIK, at the end of the server side data processing, it returns a {pseudo-}SELECT: the ouptut parameters sets, which are seen in the client with SP.fieldByName('abc').AsXyz.
That said SP.Execute should indeed return normally just\at most an row (Execute is normaly used to do an "action SQL" like an INSERT or an UPDATE). Some server databases can return a RETURNING clause). SP.Open (Open is normaly used to do an "selectable SQL" i.e. a {pseudo-}SELECT) should be called to iterate (fetch by fetch, i.e. row by row) each output variables set.
Disclaimer: I don't use SP in mySQL.