[firebase-br] Tabelas temporárias com select
Gladiston Santana
gladiston em vidy.com.br
Seg Maio 30 14:04:47 -03 2016
Um exemplo de uso que faço com GTT:
CREATE GLOBAL TEMPORARY TABLE GTT_CLIENTES_RANKING (
RAZAO_SOCIAL D_NOMECOMPLETO PRIMARY KEY,
RANKING INTEGER,
SOMA_RECEBIDOS numeric(18,2),
SOMA_ABERTOS numeric(18,2),
SOMA_PERDIDOS numeric(18,2),
SOMA_CANCELADOS numeric(18,2),
SOMA_FECHADOS numeric(18,2),
SOMA_DESISTENCIAS numeric(18,2),
FOLLOWUPS_PENDENTES INTEGER
) ON COMMIT PRESERVE ROWS;
Depois é só fazer insert/update/delete como qualquer outra tabela, de
diferente -- é o que vocÊ ja deve saber --, tudo se passa na RAM e portanto
ideal para realizar procedimentos que envolvam calculos mais longos, um
pré-processamento, no meu caso, só tem uso prático dentro de procedures,
mas o que não impede de fazê-lo para produzir relatórios no lado cliente. A
velocidade é impressionantemente, tenho exemplos de trabalhos de 20 minutos
foram resolvidos em segundos.
Voce *pode popular* uma GTT a partir de uma query com insert into...select
from, mas diferente do MSSQL, você *nao pode criar* dinamicamente uma GTT a
partir dos resultados duma query(select..into), a GTT tem que estar
previamente criada. Se estiver pensando em retornar algo para o lado
cliente, uma solução ainda melhor, é usar o datasnap do delphi e deixar o
processamento pesado fora do FB e podendo ser distribuído.
inte+
Mais detalhes sobre a lista de discussão lista