Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

MySQL - Usando resultados de procedimento armazenado para definir uma instrução IN


Que tipo de retorno tem seu procedimento armazenado atual? Você está falando de "uma lista", então TEXTO?

Talvez haja uma maneira mais fácil, mas uma coisa que você pode fazer (dentro de outro procedimento armazenado) é criar outra consulta.

Para fazer isso, precisamos contornar duas limitações do MySQL:a) Para executar SQL dinâmico dentro de um procedimento armazenado, ele precisa ser uma instrução preparada. b) As declarações preparadas só podem ser criadas a partir de variáveis ​​do usuário. Então o 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 você está falando em retornar um conjunto de resultados de uma rotina armazenada e depois usá-lo como tabela, isso não é possível. Você precisa criar uma tabela temporária para contornar esta limitação .