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

Como usar a saída da tabela do procedimento MYSQL armazenado


Isso não pode ser feito diretamente, porque a saída de uma seleção ilimitada em um procedimento armazenado é um conjunto de resultados enviado ao cliente, mas não tecnicamente uma tabela.

A solução é deixar o proc colocar os dados em uma tabela temporária depois de criar a tabela para você. Esta tabela estará disponível apenas para sua conexão quando o procedimento terminar. Não causará conflito se outra pessoa executar o proc ao mesmo tempo e não ficará visível para nenhuma outra conexão.

Adicione isso ao procedimento:
DROP TEMPORARY TABLE IF EXISTS foo;
CREATE TEMPORARY TABLE foo SELECT ... your existing select query here ...;

Quando seu procedimento terminar, SELECT * FROM foo; lhe dará o que você teria obtido do proc. Você pode se juntar a ele praticamente como qualquer mesa.

Quando terminar, solte-o ou ele desaparecerá sozinho quando você desconectar. Se você executar o proc novamente, ele será descartado e recriado.