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

SQL Oracle Discussion :

Problème mémoire? "single-row subquery returns more.."


Sujet :

SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    759
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 759
    Par défaut Problème mémoire? "single-row subquery returns more.."
    Bonjour,

    J'ai une requête assez conséquente à base de jointures et d'unions.
    Je l'exécute sous TOAD for Oracle et je vois le résultat.

    Si je demande "Record Count", j'obtiens 2330.
    Bon. Mais dès que je veux par exemple effectuer un tri (que ce soit dans les résultats ou à la fin de ma requête), là :
    ORA-01427 : single-row subquery returns more that one row.

    Je ne comprend pas...
    (le but final n'étant pas de trier, mais de faire encore des unions après : je reprend actuellement l'existant en décortiquant pour voir où ça coince et ça coince entre les 2 unions sacahnt que les 2 requêtes seules ne lancent pas d'erreur mais comme décrit ci-dessus il y a quand-même quelque chose de pas net dans la première...).

    Merci.

  2. #2
    McM
    McM est déconnecté
    Expert confirmé

    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Juillet 2003
    Messages
    4 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Juillet 2003
    Messages : 4 580
    Billets dans le blog
    4
    Par défaut
    Le record count(*) de toad ne doit pas récupérer les éléments du SELECT.
    Tu as un sous select qui te ramènes plus d'une ligne.
    A toi de trouver lequel, et sur quelle donnée (remplace le par un count(*) pour le trouver).

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    759
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 759
    Par défaut
    C'est bien un sous-select qui ramenait des doublons.

    C'est juste curieux comment ça se manifeste : c'est OK pour le retour des données mais dès qu'on veut en faire quelque chose (trier ou union), BOUM!

  4. #4
    McM
    McM est déconnecté
    Expert confirmé

    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Juillet 2003
    Messages
    4 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Juillet 2003
    Messages : 4 580
    Billets dans le blog
    4
    Par défaut
    Non, c'est pas curieux,TOAD ramène les enregistrements par curseur, et affiche les lignes par 25.

    Donc si tu descends les lignes, TOAD va fetcher les 25 suivantes, etc...
    Dès que t'arrives à la ligne qui plante : PAF, tu auras l'erreur.

    Sinon, j'ai fait un test
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    SELECT (SELECT 1 FROM dual UNION ALL SELECT 2 FROM dual) AS a
    FROM dual
     
    ORA-01427 SINGLE-ROW subquery returns more THAN one ROW
     
    SELECT COUNT(*)
    FROM (
    	SELECT (SELECT 1 FROM dual UNION ALL SELECT 2 FROM dual) AS a
    	FROM dual
    	)
     
    COUNT(*)
    1
    Donc c'est Oracle qui gère le count(*) comme cela.

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

Discussions similaires

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

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