Update dans SqlServer 2008

Résolu
Signaler
Messages postés
120
Date d'inscription
mercredi 14 janvier 2004
Statut
Membre
Dernière intervention
3 mars 2009
-
Messages postés
120
Date d'inscription
mercredi 14 janvier 2004
Statut
Membre
Dernière intervention
3 mars 2009
-
bonjour

dans un procédure stockée, je passe  des parametres, je fais des calculs
et je veux mettre à jour ma table 
Si mon enregistrement existe je fait un Update sinon un Insert

Je ne sais pas comment tester si mon enregistement existe

j'ai pensé faire un select , puis faire un if ....
je passe en paramètre mon critère de recherche.
select count(*) from table1 where champ1 = @recherche1
Mais comment recupérer la valeur  de ce select ?

ou y a t'il une autre méthode?

merci

7 réponses

Messages postés
120
Date d'inscription
mercredi 14 janvier 2004
Statut
Membre
Dernière intervention
3 mars 2009

j'ai trouve une solution :

CREATE






TABLE



#tabletemp

(



NbExiste



int
)

-- Insertion du résultat de la requête




INSERT






INTO



#tabletemp

EXEC



(
select count(*) as NB  from table1 where champ1 = [mailto:'+@recherche1 '+@recherche1]);



--Puis on récupère le résultat




DECLARE






@val



intSELECT





@val



=



NbExiste



FROM



#tabletemp

DROP






TABLE



#tabletemp

if @nbval = 0 ....
Messages postés
6063
Date d'inscription
dimanche 13 avril 2003
Statut
Modérateur
Dernière intervention
15 juillet 2011
37
Ou la
Pas besoin de sortir une table temporaire

C'est sortir un bazooka pour tuer une mouche

declare @nb as int
select @nb = count(*) from dbo.Categories
print 'nb enregistrements'
print @nb
Messages postés
6063
Date d'inscription
dimanche 13 avril 2003
Statut
Modérateur
Dernière intervention
15 juillet 2011
37
Salut,

select count(*) as NB  from table1 where champ1 = @recherche1

ou
 
nb = cmd.executescalar()
Messages postés
120
Date d'inscription
mercredi 14 janvier 2004
Statut
Membre
Dernière intervention
3 mars 2009

Merci

mais comment tester nb apres la requete select ?
quand  je veux générer ma procédure stockée il me met une erreur ...
Messages postés
6063
Date d'inscription
dimanche 13 avril 2003
Statut
Modérateur
Dernière intervention
15 juillet 2011
37
laquelle
Messages postés
120
Date d'inscription
mercredi 14 janvier 2004
Statut
Membre
Dernière intervention
3 mars 2009

bonjour

je fais

if nb = 0 
   insert ....
else
   update

et la variable  nb n'est pas trouvée ...
Messages postés
120
Date d'inscription
mercredi 14 janvier 2004
Statut
Membre
Dernière intervention
3 mars 2009

effectivement  ça marche

merci