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 :

If Then Else


Sujet :

MS SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Février 2005
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 7
    Par défaut If Then Else
    Bonjour à tous,

    Je travaille avec Sql Server 2000, j'ai besoin de faire des if then else.
    Mais chaque fois que je joue mon code j'ai le message d'erreur suivant :

    [Microsoft] [ODBC SQL Server Driver] [SQL Server] Incorrect syntax near the keyword 'THEN'.

    Voici mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    SELECT     *
    FROM         [mbrizakv].[Criticity]; 
    IF (Severity = '1' AND Criticality = '1') 
    THEN        
            UPDATE    [mbrizakv].[Criticity]    SET Priority = '3'; 
    ELSE
            UPDATE    [mbrizakv].[Criticity]    SET  Priority = '4'; 
    END IF
    Quelqu'un peut-il m'éclairé?
    Merci d'avance

    [Modération, Orafrance : Pensez à utiliser la balise [CODE] qui améliore la lisibilité, merci]

  2. #2
    Expert éminent
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Par défaut
    là tu mélanges SQL et code procédural

    et pourquoi pas simplement :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    UPDATE    [mbrizakv].[Criticity]    
    SET Priority = DECODE (CONCAT(Severity,Criticality),'11','3','4');

    Attention, je ne connais pas MS SQL-Server (mauvais forum ), la syntaxe est donc peut-être incorrecte, c'est l'idée qu'il faut retenir

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Février 2005
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 7
    Par défaut
    Si je comprend bien cela ne pourra jamais fonctionné ?

    En fait, j'ai deux listes déroulantes criticality et severity à partir des ces deux valeurs il faut que je calcul le champs Priority.

    Criticality -> 1 2 3
    Severity -> 1 2 3
    Priority = 1 si (Criticality = '1' AND Severity = '1') OR(Criticality = '1' AND Severity = '2') OR (Criticality = '2' AND Severity = '1')1

    etc...

    Le code suivant fonctionne sur Sql Server 2000, mais j'ai peur qu'il ne fonctionne pas avec la partie applicative (heat)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    SELECT     *
    FROM         mbrizakv.Criticity
          UPDATE    [mbrizakv].[Criticity] SET Priority = '1'  
    WHERE     ((Criticality = '1' AND Severity = '1') OR(Criticality = '1' AND Severity = '2') OR (Criticality = '2' AND Severity = '1'));
     
        UPDATE    [mbrizakv].[Criticity] SET Priority = '2'  
    WHERE     ((Criticality = '1' AND Severity = '3') OR (Criticality = '2' AND Severity = '2') OR (Criticality = '3' AND Severity = '1'));
     
         UPDATE    [mbrizakv].[Criticity] SET Priority = '3' 
    WHERE     ((Criticality = '2' AND Severity = '3') OR (Criticality = '3' AND Severity = '2') OR (Criticality = '3' AND Severity = '3'));
    Comprenez vous ma problèmatique ? Quelqu'un a-t-il une autre solution à proposer ?

  4. #4
    Expert éminent
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Par défaut
    là c'est vraiment trop spécifique, je ne peut pas t'aider

  5. #5
    Membre expérimenté
    Inscrit en
    Mars 2004
    Messages
    425
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 425
    Par défaut Re: If Then Else
    Citation Envoyé par Piout
    Bonjour à tous,

    Je travaille avec Sql Server 2000, j'ai besoin de faire des if then else.
    Mais chaque fois que je joue mon code j'ai le message d'erreur suivant :

    [Microsoft] [ODBC SQL Server Driver] [SQL Server] Incorrect syntax near the keyword 'THEN'.

    Voici mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    SELECT     *
    FROM         [mbrizakv].[Criticity]; 
    IF (Severity = '1' AND Criticality = '1') 
    THEN        
            UPDATE    [mbrizakv].[Criticity]    SET Priority = '3'; 
    ELSE
            UPDATE    [mbrizakv].[Criticity]    SET  Priority = '4'; 
    END IF
    Quelqu'un peut-il m'éclairé?
    Merci d'avance

    [Modération, Orafrance : Pensez à utiliser la balise [CODE] qui améliore la lisibilité, merci]
    Essaies ceci [code]SELECT *
    FROM [mbrizakv].[Criticity];
    IF (Severity = '1' AND Criticality = '1')
    BEGIN
    UPDATE [mbrizakv].[Criticity]
    SET Priority = '3'
    END
    ELSE
    BEGIN
    UPDATE [mbrizakv].[Criticity]
    SET Priority = '4'
    END [/code]

  6. #6
    Membre expérimenté
    Inscrit en
    Mars 2004
    Messages
    425
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 425
    Par défaut
    Une erreur a du survenir

    Voici
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    SELECT * 
    FROM [mbrizakv].[Criticity]; 
    IF (Severity = '1' AND Criticality = '1') 
    BEGIN 
    UPDATE [mbrizakv].[Criticity] 
    SET Priority = '3' 
    END 
    ELSE 
    BEGIN 
    UPDATE [mbrizakv].[Criticity] 
    SET Priority = '4' 
    END

  7. #7
    Rédacteur
    Avatar de WOLO Laurent
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Mars 2003
    Messages
    2 741
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Congo-Brazzaville

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2003
    Messages : 2 741
    Par défaut Re: If Then Else
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    SELECT     *
    FROM         [mbrizakv].[Criticity]; 
    IF (Severity = '1' AND Criticality = '1') 
    THEN        
            UPDATE    [mbrizakv].[Criticity]    SET Priority = '3'; 
    ELSE
            UPDATE    [mbrizakv].[Criticity]    SET  Priority = '4'; 
    END IF
    Essaie ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    UPDATE Criticity
    SET Priority=R.Priority
    FROM (SELECT PRI_ID,Priority=CASE (Severity = '1' AND Criticality = '1')
               '3'
               CASE ELSE
               '4'
               FROM Crititcity
              ) R JOIN Crititcity 
     ON R.PRI_ID=Criticity.PRI_ID

    Découvrez la FAQ de MS SQL Server.
    La chance accorde ses faveurs aux esprits avertis !

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Février 2005
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 7
    Par défaut
    Pour annedjomo
    J'ai testé ce code là:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
     
    SELECT     Severity, Criticality, Priority
    FROM         mbrizakv.Criticity;
    IF (Severity = '1' AND Criticality = '1') 
         BEGIN          UPDATE    [mbrizakv].[Criticity] SET Priority = '3' 
         END 
    ELSE 
         BEGIN         UPDATE    [mbrizakv].[Criticity] SET Priority = '4' 
         END 
    END IF
    La réponse est :
    [Microsoft] [ODBC SQL Server Driver] [SQL Server] Incorrect syntax near the keyword 'END'.

    J'ai essayé le même script avec des parenthéses comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    SELECT     Severity, Criticality, Priority
    FROM         mbrizakv.Criticity; 
    IF (Severity = '1' AND Criticality = '1') 
         (BEGIN          UPDATE    [mbrizakv].[Criticity] SET Priority = '3' END) ELSE 
         (BEGIN          UPDATE    [mbrizakv].[Criticity] SET Priority = '4' END) END IF
    La réponse est :
    [Microsoft] [ODBC SQL Server Driver] [SQL Server] Incorrect syntax near the keyword 'BEGIN'.

    Je suis perdue

  9. #9
    Membre expérimenté
    Inscrit en
    Mars 2004
    Messages
    425
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 425
    Par défaut
    Et si tu reprends mon code en enlevant le que tu as ajouté?

  10. #10
    Membre du Club
    Profil pro
    Inscrit en
    Février 2005
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 7
    Par défaut
    J'ai enlevé le
    END IF

    Donc ça donne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    SELECT     Severity, Criticality, Priority
    FROM         mbrizakv.Criticity;
    IF (Severity = '1' AND Criticality = '1') BEGIN
                              UPDATE    [mbrizakv].[Criticity]
                               SET              Priority = '3' END ELSE BEGIN
                                                          UPDATE    [mbrizakv].[Criticity]
                                                           SET              Priority = '4' END
    Résultat : il me tappe un mauvais délire : Invalid column name 'Severity'

    En enlevant le IF et en laissant le SELECT il voulait bien de l'orthographe de ma colonne Severity donc j'ai copié/collé cet orthographe là dans mon IF et :o cela ne fonctionne pas non plus

  11. #11
    Membre expérimenté
    Inscrit en
    Mars 2004
    Messages
    425
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 425
    Par défaut
    Qu'est ce que tu obtiens si tu enlèves Severity de ta requête?

  12. #12
    Membre du Club
    Profil pro
    Inscrit en
    Février 2005
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 7
    Par défaut
    J'ai enlevé severity de ma requette du coup : Invalid column name 'Criticality' ....

  13. #13
    Membre expérimenté
    Inscrit en
    Mars 2004
    Messages
    425
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 425
    Par défaut
    Dis moi ce que tu veux faire exactement et nous verrons comment formuler.

  14. #14
    Membre du Club
    Profil pro
    Inscrit en
    Février 2005
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 7
    Par défaut
    Merci à tous pour votre aide.

    J'ai fermé le sujet car j'ai trouvé des moyens de contournement.

    Pour info dans mes IF il fallait passé des SELECT (comme dans l'exemple ci-dessou) et il n'y a pas de THEN en Sql

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    IF (((select CallStatus from [dbo].[CallLog]) <> 'Closed') AND ((select CallStatus from [dbo].[CallLog]) <> 'Fixed'))
    Sinon pour mon code globale je suis passée par des Update. Le tous placé un trigger pour automatiser le traitement

    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
    26
    27
    28
    29
    30
    31
     
    CREATE TRIGGER CalculPriority ON [mbrizakv].[CallLog]
    AFTER Update
    AS
    IF (UPDATE (Criticity) OR UPDATE (Severity)) BEGIN
     
        UPDATE [mbrizakv].[CallLog] 
        SET    Priority = '1'  
        WHERE  ((Criticity = '1' AND Severity = '1') OR 
                (Criticity = '1' AND Severity = '2') OR
                (Criticity = '2' AND Severity = '1')) AND
               CallStatus  <> 'Closed' AND 
               CallStatus <> 'Fixed'
     
        UPDATE [mbrizakv].[CallLog] 
        SET    Priority = '2' 
        WHERE  ((Criticity = '1' AND Severity = '3') OR 
               (Criticity = '2' AND Severity = '2') OR 
               (Criticity = '3' AND Severity = '1')) AND
               CallStatus  <> 'Closed' AND 
               CallStatus <> 'Fixed'
     
        UPDATE [mbrizakv].[CallLog] 
        SET    Priority = '3' 
        WHERE  ((Criticity = '2' AND Severity = '3') OR 
               (Criticity = '3' AND Severity = '2') OR 
               (Criticity = '3' AND Severity = '3')) AND
               CallStatus  <> 'Closed' AND 
               CallStatus <> 'Fixed'
     
    END

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

Discussions similaires

  1. test si parametre = cide IF THEN ELSE
    Par AODRENN dans le forum SQL
    Réponses: 2
    Dernier message: 26/09/2005, 09h00
  2. [Débutant] if...then...else
    Par jive dans le forum ASP
    Réponses: 5
    Dernier message: 16/09/2005, 14h11
  3. [TagLib] Structure if then else
    Par mush_H dans le forum Taglibs
    Réponses: 5
    Dernier message: 19/07/2005, 15h31
  4. IF THEN ELSE imbriqués
    Par nuke_y dans le forum Oracle
    Réponses: 2
    Dernier message: 15/11/2004, 14h57
  5. [CR 7] [débutante] pb avec if then else
    Par xs_nady dans le forum Formules
    Réponses: 8
    Dernier message: 28/05/2004, 15h36

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