Hey,
I've just had to use this again and have made some changes, I realise I only really need to the length of the column for text columns so here it is:
select c.name as name,
' = ',
'@' + c.name as _name_param,
c.name + '_DESC' as name_ordered,
t.name + '(' + cast(c.prec as varchar(50)) + ')' as [col_def],
coldefinition =
case t.name
when 'nvarchar' then 'nvarchar' + '(' + cast(c.prec as varchar(50)) + ')'
when 'varchar' then 'nvarchar' + '(' + cast(c.prec as varchar(50)) + ')'
when 'char' then 'char' + '(' + cast(c.prec as varchar(50)) + ')'
when 'nchar' then 'nchar' + '(' + cast(c.prec as varchar(50)) + ')'
else t.name
end
+ ' = NULL'
from sysobjects s
inner join sys.syscolumns c on s.id = c.id
inner join sys.types t on t.user_type_id = c.xtype
where s.xtype='U'
and s.name = 'PolicyZoneMembership'