IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'dbo.wm_procedures2') AND type = N'P')

DROP PROC dbo.wm_procedures2

GO

 

CREATE PROC dbo.wm_procedures2

       (

       @ObjectName sysname

       )

AS

 

SELECT

       o.name AS ObjectName,

       t.name AS TableName,

       c.name AS ColumnName,

       tp.name +

              CASE c.is_identity

                     WHEN 1 THEN ' identity'

                     ELSE ''

              END AS ColumnType,

       CASE

              WHEN tp.name IN ('ntext','nchar','nvarchar')

              THEN c.max_length / 2

              ELSE c.max_length

       END AS ColumnSize,

       dc.definition AS DefaultValue,

       CASE

              WHEN c.precision = 0 AND c.scale = 0 -- text fields

              THEN ''

              WHEN tp.name IN ('bit','datetime','smalldatetime')

              THEN ''

              ELSE CAST(c.precision AS varchar) +

                     CASE c.scale

                           WHEN 0

                           THEN ''

                           ELSE ' (' + CAST(c.scale AS varchar) + ')'

                     END

       END AS [Digits (Decimals)],

       CASE c.is_nullable

              WHEN 1 THEN 'Yes'

              ELSE 'No'

       END AS Nullable,

       CASE c.is_computed

              WHEN 1 THEN 'Yes'

              ELSE 'No'

       END AS Computed,

       CASE d.is_selected

              WHEN 1 THEN 'Yes'

              ELSE 'No'

       END AS Selected

FROM

       sys.sql_dependencies d

       INNER JOIN sys.objects o

              ON d.object_id = o.object_id

       INNER JOIN sys.tables t

              ON d.referenced_major_id = t.object_id

       INNER JOIN sys.columns c

              ON t.object_id = c.object_id

              AND d.referenced_minor_id = c.column_id

       INNER JOIN sys.types tp

              ON c.system_type_id = tp.user_type_id

       LEFT JOIN sys.default_constraints dc

              ON c.default_object_id = dc.object_id

WHERE

       o.type = 'P'

 AND   o.object_id = OBJECT_ID(@ObjectName)

ORDER BY

       1,2,3

 

GO