Procedure Stockée à double fonction
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:
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.