Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Criação dinâmica de tabela em tsql


Você seria capaz de usar algo assim?
DECLARE @Tab VARCHAR(MAX)
SET @Tab = 'CREATE TABLE #Whatever ('

SELECT @Tab = @Tab + QUOTENAME(ColumnName) + ' INT NULL
,'
FROM @This
SELECT @Tab = SUBSTRING(@Tab,1,LEN(@Tab)-1) + ')'
PRINT @Tab
-- EXEC (@Tab)

Dois pontos:você pode descobrir que precisará criar a tabela temporária sem usar sql dinâmico e, em seguida, ajustar a instrução select para alterar a tabela; isso é para que a tabela exista no contexto atual - se a instrução create estiver na dinâmica, você poderá receber um erro.

Eu não gosto de usar sql dinâmico assim - se você pudesse usar um pivô mais tarde para retornar as colunas, essa poderia ser uma opção melhor (não tenho certeza se é possível neste caso).