>ALTER PROCEDURE dbo.siriussp_rsDeleteVenue (@VenueID INT) >AS >BEGIN > SET NOCOUNT ON; > > BEGIN TRY > IF OBJECT_ID('TempDB..#DelTemplates', 'U') IS NOT NULL > DROP TABLE #DelTemplates; > > IF OBJECT_ID('TempDB..#DelLevels', 'U') IS NOT NULL > DROP TABLE #DelLevels; > > IF OBJECT_ID('TempDB..#DelSections', 'U') IS NOT NULL > DROP TABLE #DelSections; > > IF OBJECT_ID('TempDB..#DelBlocks', 'U') IS NOT NULL > DROP TABLE #DelBlocks; > > IF OBJECT_ID('TempDB..#DelProds', 'U') IS NOT NULL > DROP TABLE #DelProds; > > SELECT TemplateId > INTO #DelTemplates > FROM dbo.rsTemplates > WHERE VenueID = @VenueID; > > SELECT ProdId > INTO #DelProds > FROM dbo.rsProds P > WHERE EXISTS ( > SELECT 1 > FROM #DelTemplates T > WHERE T.TemplateID = P.TemplateID > ); > > SELECT LevelID > INTO #DelLevels > FROM dbo.rsLevels L > WHERE EXISTS ( > SELECT 1 > FROM #DelTemplates D > WHERE D.TemplateID = L.TemplateID > ); > > SELECT SectionID > INTO #DelSections > FROM dbo.rsSections S > WHERE EXISTS ( > SELECT 1 > FROM #DelLevels D > WHERE D.LevelID = S.LevelID > ); > > SELECT BlockId > INTO #DelBlocks > FROM dbo.rsTSBlocks B > WHERE EXISTS ( > SELECT 1 > FROM #DelSections D > WHERE D.SectionID = B.SectionID > ); > > BEGIN TRANSACTION > > -- Seat Maps > DELETE M > FROM dbo.rsSeatMaps M > WHERE EXISTS ( > SELECT 1 > FROM #DelTemplates D > WHERE D.TemplateID = M.TemplateID > ); > > -- Exceptions first > DELETE TE > FROM dbo.rsTExcepts TE > WHERE EXISTS ( > SELECT 1 > FROM #DelBlocks D > WHERE D.BlockID = TE.BlockID > ); > > -- Blocks > DELETE B > FROM dbo.rsTSBlocks B > WHERE EXISTS ( > SELECT 1 > FROM #DelBlocks D > WHERE D.BlockID = B.BlockID > ); > > -- Sections > DELETE S > FROM dbo.rsSections S > WHERE EXISTS ( > SELECT 1 > FROM #DelSections D > WHERE D.SectionID = S.SectionID > ); > > -- Levels > DELETE L > FROM dbo.rsLevels L > WHERE EXISTS ( > SELECT 1 > FROM #DelLevels D > WHERE D.LevelID = L.LevelID > ); > > -- Shows and Productions > DELETE Sh > FROM dbo.rsShows Sh > WHERE EXISTS ( > SELECT 1 > FROM #DelProds P > WHERE P.ProdID = Sh.ProdID > ); > > DELETE P > FROM dbo.rsProds P > WHERE EXISTS ( > SELECT 1 > FROM #DelProds DP > WHERE P.ProdID = DP.ProdID > ); > > -- Template > DELETE T > FROM dbo.rsTemplates T > WHERE EXISTS ( > SELECT 1 > FROM #DelTemplates D > WHERE D.TemplateID = T.TemplateID > ); > > -- Venue > DELETE > FROM dbo.rsVenues > WHERE VenueID = @VenueID; > > COMMIT TRANSACTION > END TRY > > BEGIN CATCH > DECLARE @ErrorSeverity INT > ,@ErrorNumber INT > ,@ErrorMessage NVARCHAR(4000) > ,@ErrorState INT > ,@ErrorLine INT > ,@ErrorProc NVARCHAR(200) > > -- Grab error information from SQL functions > SET @ErrorSeverity = ERROR_SEVERITY() > SET @ErrorNumber = ERROR_NUMBER() > SET @ErrorMessage = ERROR_MESSAGE() > SET @ErrorState = ERROR_STATE() > SET @ErrorLine = ERROR_LINE() > SET @ErrorProc = ERROR_PROCEDURE() > SET @ErrorMessage = 'Problem deleting venue ' + CAST(@VenueID AS VARCHAR(10)) + CHAR(13) + 'SQL Server Error Message is: ' + CAST(@ErrorNumber AS VARCHAR(10)) + ' in procedure: ' + @ErrorProc + ' Line: ' + CAST(@ErrorLine AS VARCHAR(10)) + ' Error text: ' + @ErrorMessage > > -- Not all errors generate an error state, to set to 1 if it's zero > IF @ErrorState = 0 > SET @ErrorState = 1 > > -- If the error renders the transaction as uncommittable or we have open transactions, we may want to rollback > IF @@TRANCOUNT > 0 > BEGIN > ROLLBACK TRANSACTION > END > > RAISERROR ( > @ErrorMessage > ,@ErrorSeverity > ,@ErrorState > ,@ErrorNumber > ) > END CATCH > > RETURN @@ERROR >END >GO >