INSERT INTO SELECT— Populando tabela temporária

Daniel Mendes
Nov 1 · 2 min read

Já falamos sobre a tabela temporária anteriormente. Caso não tenha visto, não deixe de dar uma lida aqui.

Bem, já que a tabela temporária é no banco de dados, como posso criar registros nela copiando de outra tabela? Preciso fazer um while?

Não é uma resposta padrão, mas, não… Você não precisa de um while, for ou qualquer laço na camada ADVPL. Lembre-se, a tabela é no banco de dados, você pode utilizar os recursos dele!

Cenário

Preciso criar um tabela temporária com os dados da tabela de naturezas do Protheus.

Como fazer?

Vou criar a tabela temporária, fazer um DBGoTop na SED e criar aquele belo while EOF… Não, não faça isso!

A SED está no banco de dados, assim como a tabela temporária. Eu, posso fazer um INSERT INTO TABELA_TEMPORARIA (CAMPOS) SELECT CAMPOS FROM SED.

Claro, isso tá bem genérico. Mas, sim, eu posso fazer com que toda a cópia de dados seja feita pelo próprio banco de dados, imagina a performance disso? Só a redução de IO já vale a pena! =D

Exemplo (Código, Uhuu!):

Veja um exemplo abaixo de como fazer isso:

Viu só? Simples, rápido e indolor… =)


TOTVS Developers

Blog técnico do time de engenharia e desenvolvimento da TOTVS

Daniel Mendes

Written by

TOTVS Developers

Blog técnico do time de engenharia e desenvolvimento da TOTVS

Welcome to a place where words matter. On Medium, smart voices and original ideas take center stage - with no ads in sight. Watch
Follow all the topics you care about, and we’ll deliver the best stories for you to your homepage and inbox. Explore
Get unlimited access to the best stories on Medium — and support writers while you’re at it. Just $5/month. Upgrade