SQL SERVER - UNE PROC STOCK FAISANT SOIT UN UPDATE SOIT UN INSERT

cs_Creat Messages postés 76 Date d'inscription dimanche 25 juillet 2004 Statut Membre Dernière intervention 20 mars 2006 - 24 nov. 2004 à 02:48
crn_c21 Messages postés 302 Date d'inscription samedi 24 janvier 2004 Statut Membre Dernière intervention 4 février 2011 - 13 nov. 2009 à 18:07
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/26595-sql-server-une-proc-stock-faisant-soit-un-update-soit-un-insert

crn_c21 Messages postés 302 Date d'inscription samedi 24 janvier 2004 Statut Membre Dernière intervention 4 février 2011
13 nov. 2009 à 18:07
Pour une exécution plus rapide remplacer :

IF exists(SELECT USER_ID FROM dbo.TABLE_USERS WHERE (dbo.TABLE_USERS.USER_LOGIN = @Login))

Par

IF exists(SELECT TOP 1 1 FROM dbo.TABLE_USERS WHERE (dbo.TABLE_USERS.USER_LOGIN = @Login))

c'est un détail, je le concède!
jesusonline Messages postés 6814 Date d'inscription dimanche 15 décembre 2002 Statut Membre Dernière intervention 13 octobre 2010 29
21 oct. 2005 à 15:52
Merci :)
cs_marcA Messages postés 12 Date d'inscription lundi 14 avril 2003 Statut Membre Dernière intervention 3 août 2010
29 juin 2005 à 15:41
Bonjour,

Personnellement, j'utilise ceci :

Je ne sais pas si c'est moins bon ou pas.

Le Set NOCOUNT ON permet de recevoir les messages d'erreurs faits dans l'insert s'il y en a (dans des cas de contraintes pas exemple)

CREATE PROCEDURE dbo.AddOrUpdateUser
(
@Login as nvarchar(15),
@Nom as nvarchar(25),
@Prenom as nvarchar(25),
@Email as nvarchar(50),
@Telephone as nvarchar(10)
)
as
SET NOCOUNT ON
UPDATE
dbo.TABLE_USERS
SET
dbo.TABLE_USERS.USER_NOM = @Nom,
dbo.TABLE_USERS.USER_PRENOM = @Prenom,
dbo.TABLE_USERS.USER_EMAIL = @Email,
dbo.TABLE_USERS.USER_TEL = @Telephone
WHERE
dbo.TABLE_USERS.USER_LOGIN = @Login

If @@Rowcount = 0
INSERT INTO dbo.TABLE_USERS
(USER_LOGIN,
USER_NOM,
USER_PRENOM,
USER_EMAIL,
USER_TEL)
VALUES
(@Login,
@Nom,
@Prenom,
@Email,
@Telephone)


Marc
Utilisateur anonyme
14 avril 2005 à 02:46
oui moi aussi je te remercie pour ce code car il repond exactement a ce que je chercher sans arriver a l'exprimé.

voila tu vient de m'eviter 1 tube d'aspirine et ca marche en prime.

bravo
cs_jimmy69 Messages postés 778 Date d'inscription dimanche 22 décembre 2002 Statut Membre Dernière intervention 27 novembre 2008 1
22 déc. 2004 à 18:09
salut salut fabrice69,

Super ton code ....a chaque fois que je lis un de tes codes ....j'en apprends beaucoup crois moi !

Encore encore ....on veut plus de codes de ta part ;-) !
Tu n'as pas des exemple simples sur les droits et les jobs sous sql serveur a poster?

Merci pour tout....

A bientot

Ciao
Christophe
un bouillonnais
cs_Creat Messages postés 76 Date d'inscription dimanche 25 juillet 2004 Statut Membre Dernière intervention 20 mars 2006
24 nov. 2004 à 02:48
Très partique cette commande SQL
Rejoignez-nous