sql >> Base de Datos >  >> RDS >> Sqlserver

Cómo generar columnas de tablas temporales y tipos de datos automáticamente a través de un script

esto podría darle un comienzo:

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:TABLAS TEMPORALES:

las tablas temporales son ligeramente diferentes, por ejemplo, esto funciona en sql 2008 para una tabla temporal llamada #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

NOTAS:esto da una lista separada por comas, pero NO intentó eliminar esa última coma, solo da una lista, que probablemente querrá poner en una cadena y manipular, etc. y luego usarla como un sql dinámico o algo así. Aún así, debería darle un comienzo sobre lo que desea hacer.

NOTA para otros, sql 2000 no mostraría las longitudes correctamente, por ejemplo, en un varchar (45), solo enumeraría la parte varchar y no intenté volver a trabajar eso para esta pregunta.