Bueno, luego de mucho buscar estoy encontrando alguna documentación específica sobre este error.
Un caso indicado en
este link, dice que:
Cita: Usando Stored Procedures de MySQL en PHP ( MySQL error #1312 )
...
Para usar Stored Procedures en MySQL a través de PHP usted usualmente usa conexiones pdo o mysqli .
De todos modos, si no desea rehacer las conexiones de su aplicación y no requiere ningún parámetro de salida, puede usar “mysql_connect($host, $user, $password, true, 65536);” en la conexión, usando la constante interna mágica 65536 ( CLIENT_MULTI_STATEMENTS ). Pero podrá hacer sólo una llamada a stored procedure por cada conexión, y no tiene soporte para parámetros OUT. Esto no está actualmente documentado, pero puede encontrarse en los archivos header de PHP.
Si usted no usa este método de conexión , obtendrá un error “#1312 – PROCEDURE database.procedure can’t return a result set in the given context” cada vez que ejecute un CALLL a un stored procedure que deba retornar un set de datos.
Resumiendo, es, aparentemente un bug propio del uso de interfases programadas en PHP, tal como puede ser el caso de PhpMyAdmin y otras cosas similares. El problema estaría, aparentemente, en el problema qu etiene para interpretar la salida del SP como una tabla de datos, por cuanto la sentencia contenida en la ejecución no es un SELECT.
Este problema también aparece como bug en los foros de MySQL (
Call to stored procedure can not return result set), donde sugieren que sucede al usar ODBC para las conexiones, y su solución sería
Cita: Set CLIENT_MULTI_RESULTS or CLIENT_MULTI_STATEMENTS as default (or configurable) flags
when connecting to the datasource.
No te olvides que si estás usando PhpMyAdmin o Xampp, estás usando interfases que no interactúan directamente con la base, sino que lo hacen a través de un interprete.
Si estas tareas las hicieras en el modo consola de MySQL, el resultado sería otro.