Bonjour à tous,

J'ai actuellement 2 tables sous SQL Server 2000:
TableA
TableB
Et une procedure stockée, qui quand elle est executé, avec un certain nombre de parametres, fait un total des enregistrement de la table A correspondant au parametres et les insere dans la tableB.

Ce que je souhaiterais faire, c'est que cette procedure, quand on l'execute, verifie si il existe deja un enregistrement dans tableB correspondant à ses parametres, et si oui qu'elle mette à jour cette enregistrement, isnon qu'elle le créé.

Je ne vois pa strop comment m'y prendre.
Voici le code actuellement:
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
@param1 int, @param2 int, 
@param3 int, @param4 int,
@param5 int OUTPUT
 
	AS
 
INSERT INTO TableB 
	SELECT paquet , 
		 SUM(Case When Prop1 = 1 And Prop2 = 0 then 1 else 0 end) as Total1,
		 SUM(Case When Prop1 = 1 And Prop2 = 1 then 1 else 0 end) as Total2,
		 SUM(Case When Prop2 = 0 then 1 else 0 end) as Total3,
		 SUM(Case When Prop2 = 1 then 1 else 0 end) as Total4,
		 [date], Prop5, Prop6, Prop7, Prop8
	FROM Table1 
	WHERE date = cast(floor(cast(getdate() as float)) as datetime)
		AND Prop5 = @param1 AND Prop6 = @param2
		AND Prop7 = @param3 AND Prop8 = @param4
	GROUP BY paquet, date, Prop7, Prop5, Prop6, Prop8;
 
	SET @param5 =	(SELECT COUNT(*)
			FROM Table2 
			WHERE date = cast(floor(cast(getdate() as float)) as datetime)
				AND Prop5 = @param1 AND Prop6 =@param2
				AND Prop7 = @param3 AND Prop8 = @param4);
GO
En l'etat la procedure ne fait qu'inserer, et si l'enregistrement existe deja, me renvoi une violation de clef.

Si quelqu'un peut m'eclairer.