Mysql
 sql >> Base de données >  >> RDS >> Mysql

Comment utiliser la sortie de table à partir d'une procédure MYSQL stockée

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.