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

Criando tabelas temporárias no procedimento armazenado do MySQL


Eu arrumei um pouco para você e adicionei um código de exemplo. Eu sempre mantenho meus nomes de parâmetros iguais aos campos que eles representam, mas prefixo com p_ o que evita problemas. Eu faço o mesmo com variáveis ​​declaradas no corpo do sproc, mas prefixo com v_.

Você pode encontrar outro dos meus exemplos aqui:

Gerando árvore baseada em profundidade a partir de dados hierárquicos no MySQL (sem CTEs)
drop procedure if exists emp_performance;

delimiter #

create procedure emp_performance
(
in p_employee_id varchar(10)
)
begin

declare v_counter int unsigned default 0;

create temporary table tmp engine=memory select time_in, time_out 
 from attendance where employee_id = p_employee_id;

-- do stuff with tmp...

select count(*) into v_counter from tmp;

-- output and cleanup

select * from tmp order by time_in;

drop temporary table if exists tmp;

end#

delimiter ;

call emp_performance('E123456789');