Skip to main content

Exception handling in stored procedure


Exception handling in stored procedure for logging and continues running of the sp even after a error.


CREATE PROCEDURE
 @TypeData AS [DataTable] READONLY         
AS                    
BEGIN       
 SET NOCOUNT ON;        
 SELECT IDENTITY(INT, 1, 1) AS RowIndex, ... INTO #TempDataTable FROM @TypeData      

 --Temp table to log exceptions
 CREATE TABLE #TempException(ExceptionMessage VARCHAR(2000));
  
 DECLARE @MaxRow INT,  @RowID INT
  
 --Set maxrow and rowid
 SET @MaxRow = (SELECT ISNULL(COUNT(1), 0) FROM #TempDataTable)       
 SET @RowID = 1       
       
 WHILE @RowID <= @MaxRow       
 BEGIN       
      --your logic
  BEGIN TRY    
    --your logic
   SET @RowID = @RowID + 1      
  END TRY    
  BEGIN CATCH    
   SET @RowID = @RowID + 1   
   INSERT INTO #TempException (ExceptionMessage) VALUES(ERROR_MESSAGE());
  END CATCH         
 END      

--Return Error table for logging
 SELECT * FROM #TempException;
 DROP TABLE #TempException;  
  
END  

Comments