Bonjou tout le monde,

je débute sur sql server 2000 et je m'entraine sur des procédures.J'ai récupéré cette procédure qui permet d'archiver des commandes (vieilles de plus de 6 mois) ds une table "order" et orderdetail"vers des tables identiques ds la base "archives". Mais j'ai du mal avec @cutoffdate, set nocount on, rollback tran, raise error,CURRENT_TIMESTAMP, DATEADD;

Quelqu'un pourrait-il m'expliquer les étapes de cette procédure , en français ?

Merci
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
CREATE PROC dbo.ArchiveData
(
   @CutOffDate datetime = NULL
)
AS
BEGIN
	SET NOCOUNT ON
 
	IF @CutOffDate IS NULL 
	BEGIN
		SET @CutOffDate = DATEADD(mm, -6, CURRENT_TIMESTAMP)
 
	END
	ELSE
	BEGIN
		IF @CutOffDate > DATEADD(mm, -3, CURRENT_TIMESTAMP)
		BEGIN
			RAISERROR ('Cannot delete orders from last three months', 16, 1)
			RETURN -1
		END
	END
 
	BEGIN TRAN
 
		INSERT INTO Archive.dbo.Orders
		SELECT * 
		FROM dbo.Orders
		WHERE OrderDate < @CutOffDate
 
		IF @@ERROR <> 0
		BEGIN
			ROLLBACK TRAN
			RAISERROR ('Error occured while copying data to Archive.dbo.Orders', 16, 1)
			RETURN -1
		END
 
		INSERT INTO Archive.dbo.OrderDetails
		SELECT *
		FROM dbo.OrderDetails
		WHERE OrderID IN
		(
			SELECT OrderID
			FROM dbo.Orders
			WHERE OrderDate < @CutOffDate
		)
 
		IF @@ERROR <> 0
		BEGIN
			ROLLBACK TRAN
			RAISERROR ('Error occured while copying data to Archive.dbo.OrderDetails', 16, 1)
			RETURN -1
		END
 
		DELETE dbo.OrderDetails
		WHERE OrderID IN
		(
			SELECT OrderID
			FROM dbo.Orders
			WHERE OrderDate < @CutOffDate
		)
 
		IF @@ERROR <> 0
		BEGIN
			ROLLBACK TRAN
			RAISERROR ('Error occured while deleting data from dbo.OrderDetails', 16, 1)
			RETURN -1
		END
 
		DELETE dbo.Orders
		WHERE OrderDate < @CutOffDate
 
		IF @@ERROR <> 0
		BEGIN
			ROLLBACK TRAN
			RAISERROR ('Error occured while deleting data from dbo.Orders', 16, 1)
			RETURN -1
		END
 
	IF @@TRANCOUNT > 0
	BEGIN
		COMMIT TRAN
		RETURN 0
	END
 
END