sql >> Base de Datos >  >> RDS >> Mysql

MySQL:uso de los resultados del procedimiento almacenado para definir una declaración IN

¿Qué tipo de devolución tiene su procedimiento almacenado actual? Estás hablando de "una lista", entonces ¿TEXTO?

Tal vez haya una manera más fácil, pero una cosa que puede hacer (dentro de otro procedimiento almacenado) es crear otra consulta.

Para hacer eso, necesitamos evitar dos limitaciones de MySQL:a) Para ejecutar SQL dinámico dentro de un procedimiento almacenado, debe ser una declaración preparada. b) Las declaraciones preparadas solo se pueden crear a partir de variables de usuario. Entonces el SQL completo es:

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 está hablando de devolver un conjunto de resultados de una rutina almacenada y luego usarlo como tabla, eso no es posible. Debe crear una tabla temporal para solucionar esta limitación .