Mysql – Criando tabelas temporarias em Stored Procedures

Certa vez precisei criar um novo relatório para um cliente na qual envolveria varias consultas de tabelas distintas.

Vou demonstrar abaixo apenas um trecho do código para exemplificar a criação de uma tabela temporária no Mysql e como popular seus campos:

CREATE PROCEDURE `sp_relat_det`(var_datini varchar(10), var_datfim varchar(10) )
BEGIN
/* criando a tabela temporaria */
CREATE TEMPORARY TABLE relaTbltempFinal
(
  datainc varchar(7),
  novos int,
  confirmados int
);

/* populando a tabela temporária a partir de um consulta*/
/* Essa consulta irá agrupar todos os pedidos realizados dentro do período informado pelo usuário*/

insert into relaTbltempFinal (datainc)
select date_format(datincped, ‘%m/%Y’) as ‘datainc’
from tbpedido 
where datincped between var_datini  and var_datfim
group by date_format(datincped, ‘%m/%Y’);



/* Aqui eu realizo outra consulta para atualizar os dados dos demais campos ‘novos’ com um join em uma sub-query com a tabela temporaria */

update
  relaTbltempFinal
set novos =   (select count(datincped) as total from tbseguro inner join tbpedidosdet on tbpedidosdet.idseg = tbseguro.idseg inner join tbpedido on tbpedido.idped = tbpedidosdet.idped where

  tbpedido.tipPed = 1 and date_format(datincped, ‘%m/%Y’) = relaTbltempFinal.datainc )  ;


select * relaTbltempFinal;

END $$

DELIMITER ;


Resultado final: 
call sp_relat_det (‘2015-01-01’, ‘2015-02-28’);

datainc – novos   
01/2015 – 10
02/2015 – 15

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *