Mot-clé abscent

Simo59 -  
 Simo59 -
Bonjour,
j'essaye de mettre à jour le champs refclient mais j'ai toujours l'erreur mot-clé abscent !
Quelqu'un a t-il déjà eu ce problème? et a-t-il trouvé une solution svp?

UPDATE tmission
SET tmission.refclient = (
CASE
WHEN TMISSION.refclient ='1' THEN TMISSION.refclient = TMISSION.REFCLIENT ||' - '||TCONTRAT.REFCETEN
ELSE tmission.refclient = TCONTRAT.REFCETEN
END
where TMISSION.CN_IDCONTRAT = TCONTRAT.IDCONTRAT
and TCONTRAT.REFCETEN like 'CAMP%'
and TMISSION.refclient is not null
and LENGTH(TMISSION.REFCLIENT ||' - '||TCONTRAT.REFCETEN) <= 50
)

1 réponse

  1. jee pee Messages postés 31883 Date d'inscription   Statut Modérateur Dernière intervention   9 979
     
    Bonjour,

    la ) devrait être derrière END, mais moi je ne mettrais ni ( ni ) autour du CASE
    0
    1. jee pee Messages postés 31883 Date d'inscription   Statut Modérateur Dernière intervention   9 979
       
      ou il manque un select avant le CASE si () c'est un sous select
      0
    2. Simo59
       
      J'ai mis la ( après le end mais j'ai toujours la même erreur, j'ai eu le même résultat sans les parenthèses

      UPDATE tmission
      SET tmission.refclient =
      CASE
      WHEN TMISSION.refclient is not null THEN TMISSION.refclient = TMISSION.REFCLIENT ||' - '||TCONTRAT.REFCETEN
      ELSE tmission.refclient = TCONTRAT.REFCETEN
      END
      where TMISSION.CN_IDCONTRAT = TCONTRAT.IDCONTRAT
      and TCONTRAT.REFCETEN like 'CAMP%'
      and LENGTH(TMISSION.REFCLIENT ||' - '||TCONTRAT.REFCETEN) <= 50
      0
      1. jee pee Messages postés 31883 Date d'inscription   Statut Modérateur Dernière intervention   9 979 > Simo59
         
        si c 'est un sous select

        UPDATE tmission
        SET tmission.refclient = (select 
          CASE 
            WHEN TMISSION.refclient is not null  THEN  TMISSION.REFCLIENT ||' - '||TCONTRAT.REFCETEN
            ELSE TCONTRAT.REFCETEN
          END
          from TCONTrAT
          where TMISSION.CN_IDCONTRAT = TCONTRAT.IDCONTRAT
          and TCONTRAT.REFCETEN like 'CAMP%'
          and LENGTH(TMISSION.REFCLIENT ||' - '||TCONTRAT.REFCETEN) <= 50  )


        mais les lignes de tmission exclues du where risquent une affectation à null
        0
      2. Simo59 > jee pee Messages postés 31883 Date d'inscription   Statut Modérateur Dernière intervention  
         
        Merci Jee Pee maintenant je sais ce que je dois faire :)
        0