IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

MS SQL Server Discussion :

[procedure stockée] question 'basique'


Sujet :

MS SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 51
    Par défaut [procedure stockée] question 'basique'
    Bonjour
    je me lance pour la première fois dans une procédure stockée,
    Je voudrais en fait vérifier si un eligne existe dans ma table pour ensuite :
    soit faire un update dessus, soit faire un insert dessus.

    Mon problème et qu'il faut que je fasse un +1 sur un champs et je ne sais absolument pas comment faire.

    Merci de votre aide !
    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
    CREATE PROCEDURE update_consultation @idoffre int, @idclient int
    AS
    BEGIN
    	DECLARE @nb int
    	if EXISTS (SELECT idannonces, idclient, nbconsult FROM annonces_stats 
    		WHERE (idannonces=@idoffre) AND (idclient=@idclient))
    	BEGIN
    		SET @nb =nb+1
    		UPDATE annonces_stats SET nbconsult=@nb 
    		WHERE (idannonces=@idoffre) AND (idclient=@idclient)
    	END
    	ELSE
    	BEGIN
    		INSERT INTO annonces_stats VALUES (@idoffre, @idclient, 1, 0)
    	END
    END
    GO

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    434
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 434
    Par défaut
    Salut,

    ta varibale @NB n'est pas initialisée....
    Donc il s'incrémente pas ...

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 51
    Par défaut
    En fait le probleme vient du fait qu'il ne connait pas la colonne "nbconsult"

    J'ai donc initialisé ma variable :
    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
    CREATE PROCEDURE update_consultation @idoffre int, @idclient int
    AS
    BEGIN
    	DECLARE @nb int
    	set @nb=0
    	if EXISTS (SELECT nbconsult FROM annonces_stats 
    		WHERE (idannonces=@idoffre) AND (idclient =@idclient ))
    	BEGIN
    		SET @nb = nbconsult + 1
    		UPDATE annonces_stats SET nbconsult=@nb 
    		WHERE (idannonces=@idoffre) AND (idclient =@idclient )
    	END
    	ELSE
    	BEGIN
    		INSERT INTO annonces_stats VALUES (@idoffre, @idclient , 1, 0)
    	END
    END
    GO
    Et quand j'execute la procedure j'ai le message d'erreur suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Msg 207, Level 16, State 3, Procedure update_consultation, Line 10
    Invalid column name 'nbconsult'.

  4. #4
    Membre chevronné
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    434
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 434
    Par défaut
    OK je vois.
    Si j'ai bien compris ce que tu veux faire, si t'a table annonces_stats ne contient pas d'enregistrement pour le cient et l'offre passés en paramètre tu crées une.

    Si existe déjà, d'indrémente juste ton nombre de consultation ?

    Si oui alors simple comme bonjour :
    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
     
    CREATE PROCEDURE update_consultation @idoffre int, @idclient int
    AS
    BEGIN
    SET NOCOUNT ON 
    	if EXISTS (
                              SELECT 1 FROM annonces_stats 
    		WHERE idannonces=@idoffre
                              AND idclient =@idclient 
                              )
     
    		UPDATE annonces_stats 
                              SET nbconsult=nbconsult +1
                              WHERE idannonces=@idoffre
                              AND idclient =@idclient
    	ELSE
    		INSERT INTO annonces_stats
                              select @idoffre, @idclient ,1, 0
    END
    GO

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 51
    Par défaut
    Ben merci beaucoup !
    C'est effectivement très simple. si simple que je n'y avais pas pensée.
    Le fait qu'on parle de procédure stockée faisait que pour moi cela devait être compliqué au niveau syntaxique !

    En fait, ce n'est pas le cas ! (pour ce simple cas.....)

    Merci à toi

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Question sur procedure stockée avec WITH
    Par tralala2 dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 08/01/2010, 14h51
  2. [SQL 2000]question sur procedure stockée et OSQL
    Par wfirefox dans le forum Outils
    Réponses: 4
    Dernier message: 29/06/2007, 09h59
  3. procedure stockée champ date
    Par tripper.dim dans le forum SQL
    Réponses: 5
    Dernier message: 25/04/2003, 09h47
  4. Appel a une procedure stockée en vba
    Par The_Nail dans le forum VBA Access
    Réponses: 36
    Dernier message: 01/04/2003, 16h44
  5. procedure stockée dans un dbbatch
    Par pram dans le forum XMLRAD
    Réponses: 4
    Dernier message: 07/02/2003, 16h35

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo