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