detta kan ge dig en start:
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
EDIT:TEMP TABELL:
temporära tabeller skiljer sig något, till exempel fungerar detta i sql 2008 för en temptabell som heter #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
ANMÄRKNINGAR:detta ger en kommaseparerad lista, men försökte INTE ta bort det sista kommatecken, det ger bara en lista som du troligen skulle vilja sätta på en sträng och manipulera, etc. och sedan använda som en dynamisk sql eller något. Ändå bör det ge dig en start på vad du vill göra.
OBS för andra, sql 2000 skulle inte visa längderna korrekt, till exempel på en varchar(45), den skulle bara lista varchar-delen och jag försökte inte omarbeta det för den här frågan.