O que é uma table variable (variável do tipo table) no SQL Server?
É uma variável como qualquer outra com um tipo de dados especial (table) que pode ser usado para armazenar um result set qualquer.
Como criar/declarar uma table variable?
DECLARE @produto TABLE ( id int, valor money )
Como consultar uma table variable?
SELECT id, valor FROM @produto;
Quando usar?
Utilize variáveis do tipo TABLE apenas para armazenar poucos registros (Até 100 registros de preferência).
Curiosidades
- Não possuem estatísticas;
- Não podem ser alteradas depois de criadas;
- Não são afetadas por ROLLBACK, pois elas não suportam transações;
- Não existe garantia que estarão residentes apenas em memória. Sob pressão de memória as páginas pertencentes a uma variável do tipo TABLE podem ser transferidas para a database tempdb;
- Em consultas que façam junções em uma table variable considere utilizar o hintRECOMPILE para fazer com que o otimizador use a cardinalidade correta para ela.
Referências:
https://docs.microsoft.com/en-us/sql/t-sql/language-elements/declare-local-variable-transact-sql
https://docs.microsoft.com/en-us/sql/t-sql/data-types/table-transact-sql