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

MySQL - Utilisation des résultats d'une procédure stockée pour définir une instruction IN

Quel type de retour votre procédure stockée actuelle a-t-elle ? Vous parlez "d'une liste", donc TEXT ?

Il existe peut-être un moyen plus simple, mais une chose que vous pouvez faire (dans une autre procédure stockée) est de créer une autre requête.

Pour ce faire, nous devons contourner deux limitations de MySQL :a) Pour exécuter du SQL dynamique dans une procédure stockée, il doit s'agir d'une instruction préparée. b) Les instructions préparées ne peuvent être créées qu'à partir de variables utilisateur. Donc le SQL complet est :

SET @the_list = myStoredProc();
SET @the_query = CONCAT('SELECT * FROM myTable WHERE columnName IN (' , @the_list , ')');
PREPARE the_statement FROM @the_query;
EXECUTE the_statement;

Si vous parlez de renvoyer un jeu de résultats à partir d'une routine stockée, puis de l'utiliser comme table, ce n'est pas possible. Vous devez créer une table temporaire pour contourner cette limitation .