Cela ne peut pas être fait directement, car la sortie d'une sélection illimitée dans une procédure stockée est un ensemble de résultats envoyé au client, mais pas techniquement une table.
La solution de contournement consiste à laisser le proc mettre les données dans une table temporaire après avoir créé la table pour vous. Ce tableau sera disponible uniquement pour votre connexion lorsque la procédure sera terminée. Cela ne provoquera pas de conflit si quelqu'un d'autre exécute le proc en même temps et ne sera visible par aucune autre connexion.
Ajoutez ceci à la procédure :
DROP TEMPORARY TABLE IF EXISTS foo;
CREATE TEMPORARY TABLE foo SELECT ... your existing select query here ...;
Lorsque votre procédure se termine, SELECT * FROM foo;
vous donnera ce que vous auriez obtenu du proc. Vous pouvez vous y joindre à peu près comme n'importe quelle table.
Lorsque vous avez terminé, laissez-le tomber, sinon il disparaîtra tout seul lorsque vous vous déconnecterez. Si vous relancez la procédure, elle sera supprimée et recréée.