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

Langage SQL Discussion :

ORA-01427: single-row subquery returns more than one row


Sujet :

Langage SQL

  1. #1
    Membre à l'essai
    Inscrit en
    Octobre 2006
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 47
    Points : 23
    Points
    23
    Par défaut ORA-01427: single-row subquery returns more than one row
    je veux faire un update d'une table mais je reçois ce message d'erreur.
    Ma sous requête renvoie plus d'un d'enregistrement ce qui est normal pour moi mais le update ne marche pas. L'update en question concerne bien plusieurs enregistrements

    Comment faire pour corriger ce code pour que mon update se passe.


    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
     
    update ops$asy.sus_et_in u  set u.qty_beg = 
              ( select i.saditm_net_mass from ops$asy.sad_itm i, ops$asy.sad_gen s, sus_et_in n 
                where i.saditm_supp_units is null and 
          		s.sad_reg_serial = 'E' and
          		i.key_cuo ='hjhj'and 
          		s.key_year=i.key_year and 
         		s.key_cuo=i.key_cuo and 
        		s.key_dec=i.key_dec and 
          		s.key_nber=i.key_nber and   
          		n.key_year=i.key_year and 
          		n.key_cuo=i.key_cuo and 
          		n.key_dec=i.key_dec and 
          		n.key_nber=i.key_nber and 
          		n.itm_nber=i.itm_nber and 
          		n.wgt_out = 0 and
                    n.qty_beg is null and
           		i.SADITM_NET_MASS=n.wgt_beg and 
          		s.key_dec ='051' and
          		s.sad_num=i.sad_num)
    where u.qty_beg is null;

  2. #2
    Membre chevronné

    Profil pro
    Inscrit en
    Avril 2005
    Messages
    1 673
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 673
    Points : 1 775
    Points
    1 775
    Par défaut
    Citation Envoyé par hadid
    Ma sous requête renvoie plus d'un d'enregistrement ce qui est normal pour moi mais le update ne marche pas. L'update en question concerne bien plusieurs enregistrements
    D'où votre message d'erreur : pour une ligne à mettre à jour, la sous-requête peut ramener plus d'un enregistrement.
    Par conséquent, comment voulez-vous que le moteur soit capable de déterminer laquelle parmi ces N valeurs ('N' étant le nombre de lignes retournées par la sous-requête) il doit affecter à la colonne u.qty_beg ?

  3. #3
    Membre à l'essai
    Inscrit en
    Octobre 2006
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 47
    Points : 23
    Points
    23
    Par défaut
    Citation Envoyé par Magnus
    D'où votre message d'erreur : pour une ligne à mettre à jour, la sous-requête peut ramener plus d'un enregistrement.
    Par conséquent, comment voulez-vous que le moteur soit capable de déterminer laquelle parmi ces N valeurs ('N' étant le nombre de lignes retournées par la sous-requête) il doit affecter à la colonne u.qty_beg ?

    peut être que c'est pas le update qu'il me faut je n'en sais rien dans ce cas.
    moi je veux modifier la valeur de n u.qty_beg .

    Comment corriger ma sous requête c'est ça mon problème.

  4. #4
    Membre chevronné

    Profil pro
    Inscrit en
    Avril 2005
    Messages
    1 673
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 673
    Points : 1 775
    Points
    1 775
    Par défaut
    Citation Envoyé par hadid
    peut être que c'est pas le update qu'il me faut je n'en sais rien dans ce cas.
    moi je veux modifier la valeur de n u.qty_beg .

    Comment corriger ma sous requête c'est ça mon problème.
    Effectivement, la syntaxe est correcte et c'est bien cette manière de procéder qui convient pour mettre cette colonne mais on ne peut pas deviner comment est calculée la nouvelle valeur de qty_beg.
    Vous êtes le seul à pouvoir le dire !
    Cependant, par expérience, revoyez vos critères de la clause WHERE, il doit en manquer un ou il en existe un qui n'est pas correctement appliqué.

Discussions similaires

  1. Erreur ORA-01427 single-row subquery returns more than one row
    Par SmileAndFly dans le forum Langage SQL
    Réponses: 10
    Dernier message: 29/08/2008, 15h12
  2. Réponses: 5
    Dernier message: 01/02/2008, 10h07
  3. Réponses: 14
    Dernier message: 15/11/2007, 10h22
  4. Réponses: 4
    Dernier message: 25/01/2007, 15h02
  5. Réponses: 3
    Dernier message: 08/12/2006, 17h28

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