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

PL/SQL Oracle Discussion :

ORA-00947: nombre de valeurs insuffisant


Sujet :

PL/SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2004
    Messages
    84
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2004
    Messages : 84
    Par défaut ORA-00947: nombre de valeurs insuffisant
    Bonjour,

    J'ai une erreur ORA-00947 à la ligne : SELECT lg.LGID_VALUE, cny.COMPANY_OID_PK, cny.CNY_SERVICE_LEVEL.

    voici le code :
    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
     
    CREATE OR REPLACE TYPE VARLIST AS TABLE OF VARCHAR2(19);
    create or replace type EASY_OBJECT as object (easy varchar2(100),iris varchar2(24),lvlOrCny varchar2(24));
    create or replace type monTabEasy is varray(1000) of EASY_OBJECT;
     
    DECLARE
      listEasy VARLIST := VARLIST('e499','ec16','ec17'); --entree
      aTab monTabEasy; --sortie
    BEGIN
      SELECT lg.LGID_VALUE, cny.COMPANY_OID_PK, cny.CNY_SERVICE_LEVEL
        BULK COLLECT INTO aTab
        FROM TABLE(listEasy) e, CD_LGID_AT lg, CD_COMPANY cny
        WHERE lg.LGID_VALUE = e.COLUMN_VALUE
        AND lg.LGID_CNY_OID_FK = cny.COMPANY_OID_PK;
     
       FOR j IN 1..aTab.COUNT() LOOP
        DBMS_OUTPUT.PUT_LINE('Iris(' || j || ') = ' || aTab(j).iris);
       END LOOP;
    END;
    Je ne comprend pas pourquoi le nombre de valeurs est insuffisante car j'ai 3 données dans ma projection pour les mettre dans un objet de 3 colonnes.
    J'ai verifié les longueur des champs
    lg.LGID_VALUE (100) cny.COMPANY_OID_PK(23) cny.CNY_SERVICE_LEVEL(12)
    elle rentre easy varchar2(100),iris varchar2(24),lvlOrCny varchar2(24)

    Merci pour vos réponses.

  2. #2
    Membre éclairé
    Inscrit en
    Octobre 2008
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 50
    Par défaut
    Logiquement le nombre de colonnes du SELECT doit correspondre au nombre de variables de la clause INTO, ce qui n'est pas le cas dans votre code (d'où l'erreur: nombre de valeurs insuffisant).

    Pour que votre code fonctionne, il faut donc que votre select ramène le type utilisé par votre collection Atab, en l'occurence le type EASY_OBJECT.
    Il faut donc construire l'object dans le SELECT de cette manière:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
      SELECT EASY_OBJECT(lg.LGID_VALUE, cny.COMPANY_OID_PK, cny.CNY_SERVICE_LEVEL)
        BULK COLLECT INTO aTab
      ...

  3. #3
    Membre confirmé
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2004
    Messages
    84
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2004
    Messages : 84
    Par défaut
    Ca compile parfaitement
    Merci Severn, je n'aurai jamais pensé à cette syntaxe.

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

Discussions similaires

  1. ORA-01722: Nombre non valide
    Par misa dans le forum Oracle
    Réponses: 4
    Dernier message: 18/12/2007, 15h23
  2. [Etat] nombre de valeurs suivant critère
    Par bigounet dans le forum IHM
    Réponses: 4
    Dernier message: 01/03/2006, 11h47
  3. [ORA-22908] référence à une valeur de table NULL!!!
    Par Manoutch dans le forum Oracle
    Réponses: 1
    Dernier message: 08/02/2006, 07h09
  4. Nombre de valeurs différentes dans une colonne
    Par KrusK dans le forum Langage SQL
    Réponses: 4
    Dernier message: 24/08/2005, 14h18
  5. Le nombre de valeurs différentes d'un champs
    Par XecTech dans le forum Requêtes
    Réponses: 4
    Dernier message: 15/06/2005, 21h10

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