Template Script: System Proc\sp_Column.sql

USE MASTER
GO
IF OBJECT_ID('dbo.sp_Column') IS NULL
    EXEC('CREATE PROCEDURE dbo.sp_Column AS SELECT 1 AS ID')
GO
ALTER PROCEDURE dbo.sp_Column
    @ObjectName SYSNAME = NULL
AS
SET NOCOUNT ON
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED

DECLARE @ObjectId INT = OBJECT_ID(Util.dbo.TrimBothEnds(@ObjectName))
IF @ObjectId IS NULL
    BEGIN
        EXEC master.dbo.sp_ExecTemplate
            @ObjectName = 'sp_Column',
            @PrintDefault = 0,
            @DeclareReturn = 0,
            @PrintReturnLine = 0,
            @DoNotDeclareVar = 1
        RETURN
    END
SELECT  c.column_id AS ColumnId,
        c.name AS ColumnName,
        ct.ColumnType AS ColumnDef,
        ic.key_ordinal AS PKOrdinal,
        c.is_nullable AS IsNullable,
        c.is_identity AS IsIdentity,
        c.max_length AS MaxLength,
        c.is_computed AS IsComputed,
        dc.definition AS DefaultDefinition,
        ck.definition AS CheckDefinition,
        cc.DEFINITION AS ComputeDefinition
FROM    sys.schemas s (NOLOCK)
INNER JOIN sys.objects o (NOLOCK) ON s.SCHEMA_ID = o.SCHEMA_ID
INNER JOIN sys.columns c (NOLOCK) ON c.OBJECT_ID = o.OBJECT_ID
LEFT OUTER JOIN Util.dbo.SystemObjectTypes ot ON ot.Type = o.TYPE COLLATE SQL_Latin1_General_CP1_CI_AS
INNER JOIN sys.types y (NOLOCK) ON y.user_type_id = c.user_type_id
INNER JOIN sys.databases AS db (NOLOCK) ON db.database_id = DB_ID()
LEFT OUTER JOIN sys.indexes i (NOLOCK) ON i.OBJECT_ID = o.OBJECT_ID
                                          AND i.is_primary_key = 1
LEFT OUTER JOIN sys.index_columns ic (NOLOCK) ON ic.OBJECT_ID = o.OBJECT_ID
                                                 AND ic.index_id = i.index_id
                                                 AND ic.column_id = c.column_id
LEFT OUTER JOIN sys.default_constraints dc (NOLOCK) ON dc.parent_object_id = o.OBJECT_ID
                                                       AND dc.parent_column_id = c.column_id
LEFT OUTER JOIN sys.check_constraints ck (NOLOCK) ON ck.parent_object_id = o.OBJECT_ID
                                                     AND ck.parent_column_id = c.column_id
LEFT OUTER JOIN sys.computed_columns cc (NOLOCK) ON cc.OBJECT_ID = o.OBJECT_ID
                                                    AND cc.column_id = c.column_id
CROSS APPLY Util.dbo.GetColumnType(y.name, c.max_length, c.PRECISION, c.scale, c.collation_name, db.collation_name) ct
WHERE   o.OBJECT_ID = @ObjectId
OPTION  (RECOMPILE)
GO
EXEC sys.sp_ms_marksystemobject
    sp_Column
GO

Description for Template Script: System Proc\sp_Column.sql

Todo
Site Map | Printable View | © 2008 - 2012 NuRoN Consulting, INC | Powered by mojoPortal | HTML 5 | CSS | Original design by Andreas Viklund
Share This Using Popular Bookmarking Services