1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
   | USE MyDatabase;
GO
CREATE PROCEDURE dbo.MyStoredProcedure
	-- Ici on déclare les paramètres
    @Param1 nvarchar(50), 
    @Param2 nvarchar(50) 
AS 
	-- On démarre la transaction
	BEGIN TRANSACTION
 
	-- Pas besoin de compter les résultats
	SET NOCOUNT ON;
 
	-- Première insertion
	INSERT INTO dbo.MyTable1 (col1, col2)
	VALUES (450, @Param1);
 
	-- Rollback la transaction s'il y a au moins une erreur
	IF @@ERROR <> 0
		BEGIN
			-- Rollback de la transaction
			ROLLBACK
 
			-- On lève une exception et on sort
			RAISERROR ('Error while inserting data in dbo.MyTable1.', 16, 1)
			RETURN
		END
 
	-- Seconde insertion
	INSERT INTO dbo.MyTable2 (col1, col2, col3)
	VALUES (120, 0, @Param2);
 
	-- Rollback la transaction s'il y a au moins une erreur
	IF @@ERROR <> 0
		BEGIN
			-- Rollback de la transaction
			ROLLBACK
 
			-- On lève une exception et on sort
			RAISERROR ('Error while inserting data in dbo.MyTable2.', 16, 1)
			RETURN
		END
 
	-- Si on arrive ici, c'est qu'il n'y a pas eu d'erreur
	-- On vérifie qu'on a bien plusieurs lignes modifiées, et on valide la transaction
	IF @@TRANCOUNT > 0 COMMIT TRANSACTION
GO | 
Partager