Mysql
 sql >> Database >  >> RDS >> Mysql

MySQL - Utilizzo dei risultati della procedura memorizzata per definire un'istruzione IN

Che tipo di ritorno ha la tua procedura memorizzata corrente? Stai parlando di "una lista", quindi TESTO?

Forse c'è un modo più semplice, ma una cosa che puoi fare (all'interno di un'altra stored procedure) è creare un'altra query.

Per fare ciò, dobbiamo aggirare due limiti di MySQL:a) Per eseguire SQL dinamico all'interno di una procedura memorizzata, deve essere un'istruzione preparata. b) Le istruzioni preparate possono essere create solo da variabili utente. Quindi l'SQL completo è:

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;

Se stai parlando di restituire un set di risultati da una routine memorizzata e quindi di utilizzarlo come tabella, ciò non è possibile. Devi creare una tabella temporanea per aggirare questa limitazione .