INSERT INTO SELECT— Populando tabela temporária

Daniel Mendes
TOTVS Developers
Published in
2 min readNov 1, 2019

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… =)

--

--