• Superb. Love it. I added a couple of columns because i'm constantly doing JOINs and PROCEDUREs.

    EXEC(

    'SELECT b.Name AS ColumnStart,

    '','' + b.Name AS ColumnNext,

    ''['' + b.Name + '']'' AS ColumnStartBr,

    '',['' + b.Name + '']'' AS ColumnNextBr,

    ''??.'' + b.Name AS ColumnJoin,

    '', ??.['' + b.Name + '']'' AS ColumnJoinBr,

    '''' + UPPER(t.name) + CASE t.name WHEN ''varchar'' THEN ''('' + CAST(b.max_length AS VARCHAR(5)) + '')''

    WHEN ''nvarchar'' THEN ''('' + CAST(b.max_length AS VARCHAR(5)) + '')''

    WHEN ''binary'' THEN ''('' + CAST(b.max_length AS VARCHAR(5)) + '')''

    WHEN ''varbinary'' THEN ''('' + CAST(b.max_length AS VARCHAR(5)) + '')''

    WHEN ''sysname'' THEN ''('' + CAST(b.max_length AS VARCHAR(5)) + '')''

    WHEN ''text'' THEN ''('' + CAST(b.max_length AS VARCHAR(5)) + '')''

    WHEN ''ntext'' THEN ''('' + CAST(b.max_length AS VARCHAR(5)) + '')''

    WHEN ''char'' THEN ''('' + CAST(b.max_length AS VARCHAR(5)) + '')''

    WHEN ''sql_variant'' THEN ''('' + CAST(b.max_length AS VARCHAR(5)) + '')''

    WHEN ''decimal'' THEN ''('' + CAST(b.max_length AS VARCHAR(5)) + '','' + CAST(b.precision AS VARCHAR(5))+ '')''

    ELSE '''' END AS [Declare]

    FROM ' + @Database + '.sys.objects a

    INNER JOIN ' + @Database + '.sys.columns b ON a.object_id=b.object_id

    INNER JOIN ' + @Database + '.sys.types t ON b.system_type_id = t.system_type_id

    INNER JOIN ' + @Database + '.sys.schemas d ON a.schema_id=d.schema_id

    WHERE a.Object_ID = OBJECT_ID(''' + @Database + '.' + @Schema + '.' + @Object + ''')

    AND d.name = ''' + @Schema + '''

    '

    )

    I use the "??" as a simple tag for aliases in joins.