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

Oracle Discussion :

Erreur avec rowtype


Sujet :

Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Décembre 2005
    Messages
    455
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 455
    Par défaut Erreur avec rowtype
    Bonjour,

    je suis en trainde créer une procédure PL/SQL.
    Dans cette procédure, je veux récupérer les champs d'une ligne d'une table.
    Je fais comme suit:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    PROCEDURE Nom_proc IS 
     variable  table%rowtype; 
      BEGIN 
       SELECT   col1,.., col18 into variable 
       FROM table; 
     END;

    il me met donc une erreur ORA00913 qui me dit que j'ai trop de valeurs pourtant ma table compte 18 variables.
    Je ne sais pas d'où ça vient.
    Si quelqu'un peut m'aider?merci

  2. #2
    Expert confirmé
    Avatar de SheikYerbouti
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    6 760
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 6 760
    Par défaut
    Avec %ROWTYPE, il faut utiliser Select *

  3. #3
    Membre éclairé
    Inscrit en
    Décembre 2005
    Messages
    455
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 455
    Par défaut
    Justement j'avais essayé mais j'avais cette erreur.
    C'est pour ça que j'ai décidé d'énoncer toutes mes colonnes.

  4. #4
    Membre Expert

    Profil pro
    Inscrit en
    Février 2006
    Messages
    3 437
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 3 437
    Par défaut
    Peux-tu nous donner la version d'Oracle que tu utilises ainsi
    que:
    - le CREATE TABLe pour la table
    - le code complet de ta procédure avec SELECT *
    - le message d'erreur

    Merci.

  5. #5
    Membre éclairé
    Inscrit en
    Décembre 2005
    Messages
    455
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 455
    Par défaut
    Citation Envoyé par pifor
    Peux-tu nous donner la version d'Oracle que tu utilises ainsi
    que:
    - le CREATE TABLe pour la table
    - le code complet de ta procédure avec SELECT *
    - le message d'erreur

    Merci.
    Version Oracle: 9i
    Table:
    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
    22
     
    CREATE TABLE FDHIST
    (
      col1  VARCHAR2(10)                      NOT NULL,
      col2  VARCHAR2(8)                       NOT NULL,
      col3  VARCHAR2(15)                      NOT NULL,
      col4  VARCHAR2(15)                      NOT NULL,
      col5  VARCHAR2(15)                      NOT NULL,
      col6  VARCHAR2(15)                      NOT NULL,
      col7  VARCHAR2(15)                      NOT NULL,
      col8  VARCHAR2(2)                       NOT NULL,
      col9  VARCHAR2(15)                      NOT NULL,
      col10  VARCHAR2(2)                       NOT NULL,
      col11  VARCHAR2(5)                       NOT NULL,
      col12  VARCHAR2(1)                       NOT NULL,
      col13  VARCHAR2(8)                       NOT NULL,
      col14  VARCHAR2(2)                     NOT NULL,
      col15  VARCHAR2(10)                      NOT NULL,
      col16  VARCHAR2(15)                      NOT NULL,
      col17  VARCHAR2(10)                      NOT NULL,
      col18  NUMBER(10)                             NOT NULL
    )
    Ma procedure:
    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
     
        PROCEDURE nom_proc IS
      num table.numero%TYPE;
      variable table3%rowtype;
     
      BEGIN
        FOR c IN (SELECT * FROM table2)
        LOOP
          BEGIN
           SELECT numero INTO Num FROM table WHERE col1 = c.col1;
           EXCEPTION
           WHEN NO_DATA_FOUND THEN
           NULL;
          SELECT * into variable
          FROM table3
         END;
       END LOOP;
      END;
    Erreur oracle ora00913 too many values.

  6. #6
    Expert confirmé
    Avatar de SheikYerbouti
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    6 760
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 6 760
    Par défaut
    Pas de problème sur une 9.0.2

    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
    SQL> INSERT INTO fdhist VALUES('x','x','x','x','x','x','x','x','x','x','x','x','x','x','x','x','x',0)
      2  /
     
    1 ligne créée.
     
    SQL> DECLARE
      2    variable fdhist%ROWTYPE ;
      3  BEGIN
      4    SELECT * INTO variable FROM fdhist
      5    WHERE ROWNUM <= 1 ;
      6  END;
      7  /
     
    Procédure PL/SQL terminée avec succès.
     
    SQL>
    Ce qui est bizarre dans votre code, c'est que le Select se trouve dans le block Exception....

  7. #7
    Membre éclairé
    Inscrit en
    Décembre 2005
    Messages
    455
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 455
    Par défaut
    Autant pour moi, je viens de me rendre compte que je me suis trompée dans la table de mon rowtype.

    Ce qui est bizarre dans votre code, c'est que le Select se trouve dans le block Exception....

    Ai je oublié un END?

  8. #8
    Membre Expert

    Profil pro
    Inscrit en
    Février 2006
    Messages
    3 437
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 3 437
    Par défaut
    Ca dépend; si le SELECT doit être exécuté en cas d'exception: non.
    Si le SELECT doit être exécuté s'il n'y a pas d'exception: il faut mettre le END au dessus.

  9. #9
    Membre éclairé
    Inscrit en
    Décembre 2005
    Messages
    455
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 455
    Par défaut
    OK merci...

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

Discussions similaires

  1. Erreur Avec Interbase
    Par smokemon dans le forum Bases de données
    Réponses: 1
    Dernier message: 29/10/2004, 07h24
  2. Erreur avec procédure LockWorkStation ...
    Par simonseztech dans le forum API, COM et SDKs
    Réponses: 4
    Dernier message: 16/08/2004, 15h33
  3. [Débutant][Conception] Erreur avec une classe interne
    Par Devil Redneck dans le forum Général Java
    Réponses: 5
    Dernier message: 11/06/2004, 15h45
  4. Erreur avec les ADO
    Par megane dans le forum Bases de données
    Réponses: 7
    Dernier message: 08/03/2004, 21h37
  5. Erreur avec WM_COMMAND (BN_CLICKED)
    Par cyberlewis dans le forum Windows
    Réponses: 2
    Dernier message: 09/02/2004, 00h25

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