One of the annoying limitations of MySQL/MariaDB stored
procedures is the lack of a FOREACH construct, which loops on
each row returned by a query.
In practice, this forces users to write a lot of code just to
tell MySQL how to fetch rows and exit properly. Nesting 2 loops
of this kind simply results in unmaintenable code (don’t trust
me, just try).
Now, I’m writing a library of views and procedures that I’ll
share as open source in the next days, and I decided to finally
write my foreach. Well, sort of. It is impossible to use the
current stored procedures language to write a flexible foreach,
because to loop rows you need a cursor. And cursors are based on
a hard-coded query. In this old post I proposed a verbose, ugly, but
working solution, but it has a limitation: the number of columns
returned by the query …[Read more]