Template Script: System Proc\sp_ViewScript.sql

USE master
GO
IF OBJECT_ID('dbo.sp_ViewScript') IS NULL
    EXEC('CREATE PROCEDURE dbo.sp_ViewScript AS SELECT 1 AS ID')
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE dbo.sp_ViewScript
    @Table SYSNAME = NULL,
    @Quoted BIT = 1,
    @CreateDrop BIT = 1,
    @SortByColumnName BIT = 1
AS
SET NOCOUNT ON
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED
DECLARE @OBJECT_ID INT = OBJECT_ID(Util.dbo.TrimBothEnds(@Table)),
    @SQL VARCHAR(MAX)


IF @OBJECT_ID IS NULL
    BEGIN
        EXEC master.dbo.sp_ExecTemplate
            @ObjectName = 'sp_ViewScript',
            @PrintDefault = 0,
            @DeclareReturn = 0,
            @PrintReturnLine = 0,
            @DoNotDeclareVar = 1
        RETURN 30
    END

SELECT  @SQL = 'IF OBJECT_ID(''' + ViewName + ''') IS NOT NULL DROP VIEW ' + ViewName + '
GO
CREATE VIEW '
 + ViewName + '
AS
SELECT
    '
 + Util.dbo.StringConcat('t.' + CASE WHEN @Quoted = 1 THEN '[' + ColumnName + ']'
                                            ELSE ColumnName
                                       END, ',
    '
) + '
FROM '
 + TableName + ' t
GO'

FROM    (SELECT TOP 999999
                CASE WHEN s.name LIKE 't%' THEN SUBSTRING(s.name, 2, 128)
                     ELSE s.name
                END + '.v' + t.name AS ViewName,
                s.name + '.' + t.name AS TableName,
                c.name AS ColumnName
         FROM   sys.schemas s (NOLOCK)
         INNER JOIN sys.tables t (NOLOCK) ON s.SCHEMA_ID = t.SCHEMA_ID
         INNER JOIN sys.columns c (NOLOCK) ON c.OBJECT_ID = t.OBJECT_ID
         WHERE  t.is_ms_shipped = 0
                AND t.OBJECT_ID = @oBJECT_ID
         ORDER BY CASE WHEN @SortByColumnName = 1 THEN c.name
                       ELSE ''
                  END,
                c.column_id) k
GROUP BY ViewName,
        TableName

EXEC Util.dbo.PrintLargeText
    @SQL
GO
EXEC sys.sp_ms_marksystemobject
    sp_ViewScript
GO

Description for Template Script: System Proc\sp_ViewScript.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