O que é uma Table variable?

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