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

Como gerar colunas e tipos de dados da tabela temporária automaticamente via script


isso pode te dar um começo:
DECLARE @viewname VARCHAR(50);
SET @viewname ='tableorviewname';
SELECT  c.name + ' '+ t.name + 
case t.name  
WHEN 'varchar' THEN '('+CAST(c.max_length AS VARCHAR(3) )+'),'
ELSE ',' 
end
FROM sys.columns c
INNER JOIN sys.types AS t ON c.system_type_id = t.system_type_id
WHERE object_id = (SELECT object_id from sys.objects where name = @viewname)
ORDER BY c.column_id

EDITAR:TABELAS TEMP:

tabelas temporárias são um pouco diferentes, por exemplo, isso funciona no sql 2008 para uma tabela temporária chamada #tv_source
DECLARE @viewortablename VARCHAR(50);
SET @viewortablename ='tempdb..#tv_source';
SELECT  c.name + ' '+ t.name + 
case t.name  
WHEN 'varchar' THEN '('+CAST(c.max_length AS VARCHAR(3) )+'),'
ELSE ',' 
end
FROM tempdb.sys.columns c
INNER JOIN sys.types AS t ON c.system_type_id = t.system_type_id
WHERE object_id =  object_id(@viewortablename)
ORDER BY c.column_id

OBSERVAÇÕES:isso fornece uma lista separada por vírgulas, mas NÃO tentou remover a última vírgula, fornece apenas uma lista, que você provavelmente gostaria de colocar em uma string e manipular, etc. Ainda assim, deve dar-lhe um começo sobre o que você deseja fazer.

NOTA para outros, o sql 2000 não exibiria os comprimentos corretamente, por exemplo, em um varchar (45), apenas listaria a parte varchar e eu não tentei refazer isso para esta pergunta.