Template Script: System Proc\sp_ExecBatchTerminated.sql

USE MASTER
GO
IF OBJECT_ID('sp_ExecBatchTerminated') IS NULL
    EXEC('CREATE PROCEDURE sp_ExecBatchTerminated AS SELECT 1 AS ID')
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE sp_ExecBatchTerminated
    @InputSQL VARCHAR(MAX) = NULL,
    @SQL NVARCHAR(MAX) = '' OUTPUT,
    @PrintStmtOnError BIT = 1,
    @ReturnOnError BIT = 1,
    @PrintSQL BIT = 0,
    @ExecSQL BIT = 1,
    @SetNocountOn BIT = 0,
    @DbName SYSNAME = NULL,
    @UseTryCatch BIT = 0,
    @ErrorCount INT = 0 OUTPUT,
    @BatchTerminator VARCHAR(30) = '
GO
'

AS
SET NOCOUNT ON
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED
IF @InputSQL IS NULL
    BEGIN
        EXEC master.dbo.sp_ExecTemplate
            @ObjectName = 'sp_ExecBatchTerminated',
            @PrintDefault = 0,
            @DeclareReturn = 0,
            @PrintReturnLine = 0,
            @DoNotDeclareVar = 1
        RETURN
    END
SET @ErrorCount = 0 ;
WITH    execs
          AS (SELECT    CASE WHEN @PrintSQL = 1 THEN 'PRINT ''-- Batch: ' + CAST(FieldNum AS VARCHAR) + '
'
 + REPLACE(Field, '''', '''''') + ''''
                             ELSE ''
                        END + CASE WHEN @UseTryCatch = 1 THEN 'BEGIN TRY
'
                                  ELSE ''
                              END + 'EXEC(''' + CASE WHEN @DbName <> '' THEN 'USE ' + @DbName + '
EXEC('''''
 + REPLACE(Field, '''', '''''''''') + ''''')'
                                                     ELSE REPLACE(Field, '''', '''''')
                                                END + ''')
'
 + CASE WHEN @UseTryCatch = 1 THEN 'END TRY
BEGIN CATCH
    SET @ErrorCount = @ErrorCount + 1
'
 + CASE WHEN @PrintStmtOnError = 1
              AND @PrintSQL = 0
              OR @ReturnOnError = 1 THEN 'PRINT ''-- Batch: ' + CAST(FieldNum AS VARCHAR) + '
'
 + REPLACE(Field, '''', '''''') + ''''
         ELSE ''
    END + '
EXEC sp_ErrorHandler
        @PrintError = 1
'
 + CASE WHEN @ReturnOnError = 1 THEN 'RETURN'
         ELSE ''
    END + '
END CATCH'

         ELSE ''
    END + CASE WHEN @UseTryCatch = 0
                    AND @PrintStmtOnError = 1
                    AND @PrintSQL = 0
                    OR @ReturnOnError = 1 THEN 'IF @@ERROR > 0 BEGIN
'
 + CASE WHEN @UseTryCatch = 0
              AND @PrintStmtOnError = 1
              AND @PrintSQL = 0 THEN '    PRINT ''-- Batch: ' + CAST(FieldNum AS VARCHAR) + '
'
 + REPLACE(Field, '''', '''''') + ''''
         ELSE ''
    END + CASE WHEN @UseTryCatch = 0
                    AND @ReturnOnError = 1 THEN '
    RETURN'
  ELSE ''
          END + '
END;'
          ELSE ''
          END AS SQL
              FROM      Util.dbo.ParseDelimited(@InputSQL, @BatchTerminator) AS s)
    SELECT  @SQL = Util.dbo.StringConcat(SQL, '

'
)
    FROM    execs

IF @ExecSQL = 1
    BEGIN
        IF @SetNocountOn = 1
            SET NOCOUNT ON
        EXEC SP_EXECUTESQL
            @SQL,
            N'@ErrorCount INT OUTPUT',
            @ErrorCount OUTPUT
    END

GO
EXEC sys.sp_ms_marksystemobject
    sp_ExecBatchTerminated
GO

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