Variáveis de tabela no SQL Server vivem na memória da sessão, têm estatísticas limitadas e desaparecem ao sair do batch. O PostgreSQL não tem equivalente direto — você escolhe entre tabela temporária ou CTE.
CREATE TEMP TABLE (substituto mais comum)
SQL Server
DECLARE @tmp TABLE (id int, nome text); INSERT INTO @tmp VALUES (1, 'A');
PostgreSQL
CREATE TEMP TABLE tmp (id int, nome text) ON COMMIT PRESERVE ROWS; INSERT INTO tmp VALUES (1, 'A');
CTE (dados de curta duração)
Use CTE quando os dados só são necessários em uma query encadeada. Use TEMP TABLE quando a mesma estrutura é reutilizada em vários comandos na procedure.
WITH novos AS ( SELECT id, nome FROM clientes WHERE ativo = true ) SELECT * FROM novos;