Mot-clé abscent

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

  • Votes
  • Date
  • Date décroissante
  1. Modérateur
    Bonjour,

    la ) devrait être derrière END, mais moi je ne mettrais ni ( ni ) autour du CASE
    1. Modérateur
      ou il manque un select avant le CASE si () c'est un sous select
    2. 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
    3. Modérateur
      @Simo59si 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
    4. @jee peeMerci Jee Pee maintenant je sais ce que je dois faire :)