[Oracle] problème UPDATE et SELECT

Bonjour à tous et à toutes !

Je vous explique mon soucis.

J'ai plusieurs tables :

- ARTICLE
- GAMME
- PHASE
- PH_NAT

Le fonctionnement est simple : Un article est fait suivant sa gamme de fabrication qui se divise en phases. Chaque phase possède une nature (PH_NAT)

Ne me demandez pas pourquoi cette organisation, je ne suis pas à l'origine de cette base.

En français dans le texte je désirerai : Pour chaque article, dont le libellé de la nature de phase contient "DECO", le champs LOT_ECO reçoit 0, QTE_ECO reçoit 0, PERTE_EXCEP reçoit 3 et TYPE_PERTE reçoit 0

Ma requête donne :

update ARTICLE A
set LOT_ECO = 0,
QTE_ECO = 0,
PERTE_EXCEP = 3,
TYPE_PERTE = 0
where A.ID_ARTICLE in (
select A.ID_ARTICLE
from ARTICLE A, PHASE P, GAMME G, PH_NAT N
where A.CD_GAMME = G.CD_GAMME
and G.CD_GAMME = P.CD_GAMME
and P.CD_PH_NAT = N.CD_PH_NAT
and N.LIBELLE like '%DECO%')

Le problème c'est que Oracle me retourne : ORA-24333 : décompte d'itération égal à zéro.
J'ai testé ma sous requete, elle me retourne les bons champs. La syntaxe de mon update n'est donc pas correcte mais je ne vois vraiment pas où. J'ai cherché des réponses mais rien ne m'a sauté aux yeux malheureusement.

Une petite idée ?

Merci d'avance !

4 réponses

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

    Une petite suggestion je n'utiliserais pas 2 fois le préfixe A pour la table article. Dans le sous select je mettrais une autre lettre.

    cdlt
    1. Salut,

      Oui merci j'ai modifié ça, donc maintenant j'ai
      update ARTICLE A
      set LOT_ECO = 0,
      QTE_ECO = 0,
      PERTE_EXCEP = 3,
      TYPE_PERTE = 0
      where A.ID_ARTICLE in (
      select A.ID_ARTICLE
      from ARTICLE AR, PHASE P, GAMME G, PH_NAT N
      where AR.CD_GAMME = G.CD_GAMME
      and G.CD_GAMME = P.CD_GAMME
      and P.CD_PH_NAT = N.CD_PH_NAT
      and N.LIBELLE like '%DECO%')

      Mais toujours le ORA-24333 :/
      1. Modérateur
        where A.ID_ARTICLE in (
        select A.ID_ARTICLE

        C'est pas modifié partout ;-)

        Un étranger, c'est un ami qu'on n'a pas encore rencontré.
        1. Woups :/ Merci c'est bon mais toujours le même message :/
          1. Modérateur
            Désolé, pas d'autre idée.