prSuperProc : 1 , . , prSuperProc, 1 prProc1-prProc2 + prProc3 2 prProc1-prProc2 + prProc3.
:
user1 calls prSuperProc
user1 prProc1 is called
user2 calls prSuperProc
user1 prProc2 is called
user2 prProc1 is called
user1 prProc3 is called
user2 prProc2 is called
user2 prProc3 is called
, , /
, :
CREATE PROCEDURE [dbo].[prSuperProc]
AS
BEGIN TRY
BEGIN TRANSACTION
EXEC [dbo].[prProc1]
EXEC [dbo].[prProc2]
EXEC [dbo].[prProc3]
COMMIT
END TRY
BEGIN CATCH
IF XACT_STATE()!=0
BEGIN
ROLLBACK TRANSACTION
END
SELECT
ERROR_NUMBER() AS ErrorNumber
,ERROR_SEVERITY() AS ErrorSeverity
,ERROR_STATE() AS ErrorState
,ERROR_PROCEDURE() AS ErrorProcedure
,ERROR_LINE() AS ErrorLine
,ERROR_MESSAGE() AS ErrorMessage
DECLARE @ErrorMessage nvarchar(400), @ErrorNumber int, @ErrorSeverity int, @ErrorState int, @ErrorLine int
SELECT @ErrorMessage = N'Error %d, Line %d, Message: '+ERROR_MESSAGE(),@ErrorNumber = ERROR_NUMBER(),@ErrorSeverity = ERROR_SEVERITY(),@ErrorState = ERROR_STATE(),@ErrorLine = ERROR_LINE()
RAISERROR (@ErrorMessage, @ErrorSeverity, @ErrorState, @ErrorNumber,@ErrorLine)
END CATCH
GO
, . TRY-CATCH , , .