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 :

Erreur non compris


Sujet :

MS SQL Server

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    138
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Maroc

    Informations forums :
    Inscription : Mai 2007
    Messages : 138
    Points : 72
    Points
    72
    Par défaut Erreur non compris
    Bonjour tout le monde.
    La requette suivante ne s'execute pas et me renvoie l'erreur suivante:

    Syntaxe incorrecte vers le mot clé 'then'
    Syntaxe incorrecte vers le mot clé 'else'
    J'ai suivi la requette mot par mot et je pense que ma syntaxe est juste.

    Voila l'extrait du code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    SET @CA_TTC_BUDGET = cast(( case when isnumeric((SELECT ROUND(MT_CA_TTC/@CONV_PRIX,2) FROM TABLEAU_BORD TB
    							INNER JOIN BUDGET_MOIS BM ON TB.ID_TABLEAU_BORD = BM.ID_TABLEAU_BORD AND TB.SALES_CLASS_NO = @RAYON
    							WHERE BM.NUM_ANNEE = @ANNEE AND BM.NUM_MOIS = @MOIS)) 
    				then ((SELECT ROUND(MT_CA_TTC/@CONV_PRIX,2) FROM TABLEAU_BORD TB 
    					INNER JOIN BUDGET_MOIS BM ON TB.ID_TABLEAU_BORD = BM.ID_TABLEAU_BORD AND TB.SALES_CLASS_NO = @RAYON
    					WHERE BM.NUM_ANNEE = @ANNEE AND BM.NUM_MOIS = @MOIS)) 
    				else 0) 
    			as numeric)
    		     end
    Quelqu'un peut me dire ou est la faille dans mon code ?

    Merci d'avance pour vos reponses

  2. #2
    ced
    ced est déconnecté
    Rédacteur/Modérateur

    Avatar de ced
    Homme Profil pro
    Gestion de bases de données techniques
    Inscrit en
    Avril 2002
    Messages
    6 040
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Gestion de bases de données techniques
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Avril 2002
    Messages : 6 040
    Points : 23 795
    Points
    23 795
    Par défaut
    Bonjour,

    En regardant vite fait, comme ça, il manque au moins le END du CASE, ou alors il est mal positionné.
    Sinon, la double parenthèse après ISNUMERIC n'est pas nécessairement utile, mais ne doit pas bloquer...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    SET @CA_TTC_BUDGET = cast(( case when isnumeric(SELECT ROUND(MT_CA_TTC/@CONV_PRIX,2) FROM TABLEAU_BORD TB
    							INNER JOIN BUDGET_MOIS BM ON TB.ID_TABLEAU_BORD = BM.ID_TABLEAU_BORD AND TB.SALES_CLASS_NO = @RAYON
    							WHERE BM.NUM_ANNEE = @ANNEE AND BM.NUM_MOIS = @MOIS) 
    				then (SELECT ROUND(MT_CA_TTC/@CONV_PRIX,2) FROM TABLEAU_BORD TB 
    					INNER JOIN BUDGET_MOIS BM ON TB.ID_TABLEAU_BORD = BM.ID_TABLEAU_BORD AND TB.SALES_CLASS_NO = @RAYON
    					WHERE BM.NUM_ANNEE = @ANNEE AND BM.NUM_MOIS = @MOIS) 
    				else 0 end) 
    			AS numeric)
    ced

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    138
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Maroc

    Informations forums :
    Inscription : Mai 2007
    Messages : 138
    Points : 72
    Points
    72
    Par défaut
    avant tout merci pour ta reponse

    ca ne resoud pas le problème

    Apres avoir remplacé mon code par le tien, ca se complile pas comme le mien

    voila apres modif la liste des erreurs:

    Serveur : Msg 156, Niveau 15, État 1, Procédure up_gescoCE_GetDonneesBudget, Ligne 37
    Syntaxe incorrecte vers le mot clé 'SELECT'.
    Serveur : Msg 170, Niveau 15, État 1, Procédure up_gescoCE_GetDonneesBudget, Ligne 39
    Ligne 39 : syntaxe incorrecte vers ')'.
    Serveur : Msg 156, Niveau 15, État 1, Procédure up_gescoCE_GetDonneesBudget, Ligne 42
    Syntaxe incorrecte vers le mot clé 'else'.

  4. #4
    ced
    ced est déconnecté
    Rédacteur/Modérateur

    Avatar de ced
    Homme Profil pro
    Gestion de bases de données techniques
    Inscrit en
    Avril 2002
    Messages
    6 040
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Gestion de bases de données techniques
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Avril 2002
    Messages : 6 040
    Points : 23 795
    Points
    23 795
    Par défaut
    Ca ne m'étonne qu'à moitié, j'ai recopié comme un sauvage sans prendre le temps de bien corriger...
    Cela dit, en y regardant de plus près, à quoi sert le cast, puisque le case renvoit nécessairement du numeric, vu se synthaxe ?

    ced

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    138
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Maroc

    Informations forums :
    Inscription : Mai 2007
    Messages : 138
    Points : 72
    Points
    72
    Par défaut
    Le cast est utilisé pour que quoi que se soit la valeur, elle sera forcé a être stocké as numeric.

    D'autre part, j'ai trouvé la solution a mon problème, c'est qu'il faut préciser la valeur 1 ou 0 réspectivement True ou False a la fonction ISNUMERIC.

    Merci comme même pour ton attention CED

    Im@D_InG

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

Discussions similaires

  1. message d'erreur non compris
    Par tchangou dans le forum Beamer
    Réponses: 3
    Dernier message: 27/01/2011, 08h41
  2. Message d'erreur non compris
    Par amilia63 dans le forum Développement
    Réponses: 3
    Dernier message: 21/11/2008, 18h11
  3. [D7] [oracle 9i] un message d'erreur non compris
    Par iam dans le forum Bases de données
    Réponses: 2
    Dernier message: 23/07/2007, 11h32
  4. [ADO-Access] ADOQuery1.Open (SELECT) -> Erreur non spécif
    Par david_chardonnet dans le forum Bases de données
    Réponses: 3
    Dernier message: 10/11/2004, 15h29

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