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 exécution procédure


Sujet :

SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de cashmoney
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    298
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 298
    Par défaut Problème exécution procédure
    bonjour, vioci ma procédure qui se compile bien :

    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
     
    create or replace procedure param_in_out (codfou IN NUMBER, montant IN OUT NUMBER) is
    e_numcom entcom.numcom%type;
    l_numcom ligcom.numcom%type;
    f_numfou fournis.numfou%type;
    l_qtecde ligcom.qtecde%type;
    l_priuni ligcom.priuni%type;
    begin
    select f.numfou, e.numcom, l.numcom
    into f_numfou, e_numcom, l_numcom
    from fournis f, entcom e, ligcom l
    where codfou= f.numfou
    and f.numfou= e.numfou
    and e.numcom= l.numcom;
    montant:=l_qtecde*l_priuni;
    end param_in_out
    ensuite voici ma requête appelant ma procédure:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    Declare
          montant NUMBER := 236 ;
        Begin
          param_in_out( 120, montant );
         dbms_output.put_line('Fournisseur 120 aura un montant de:'||To_char(montant));
        End ;
    ensuite voici l'erreur que me renvoie l'exécution de la requête qui appelle ma procédure
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Error report:
    ORA-01422: l'extraction exacte ram�ne plus que le nombre de lignes demand�
    ORA-06512: � "RAY.PARAM_IN_OUT", ligne 8
    ORA-06512: � ligne 4
    01422. 00000 -  "exact fetch returns more than requested number of rows"
    *Cause:    The number specified in exact fetch is less than the rows returned.
    *Action:   Rewrite the query or change number of rows requested
    Merci pour votre aide

  2. #2
    Membre Expert Avatar de fatsora
    Profil pro
    Inscrit en
    Février 2006
    Messages
    1 103
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 1 103
    Par défaut
    Bonsoir ,

    voir ici une reponse probable ...

    http://www.developpez.net/forums/d11...01422-06512-a/

  3. #3
    Membre éclairé Avatar de cashmoney
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    298
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 298
    Par défaut
    Merci pour le lien, mais j'avais déjà vu ça hier, mais j'ai pas pu l'exploiter parce que j'ai pas tout à fait compris. j'ai seulement vu qu'il fallait insérer le TOO_MANY_ROWS, je sais pas comment et où l'insérer alors complètement perdu.

  4. #4
    Membre expérimenté
    Inscrit en
    Janvier 2009
    Messages
    162
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 162
    Par défaut
    Bonjour,

    La requête de ta procédure ramène visiblement plus d'une ligne, le select into est fait pour ne stocker les valeur que d'une seule ligne.
    Tu as donc 2 solutions : soit ton fonctionnel te permet d'être certain de ne ramener qu'une seule ligne et tu dois modifier ton select en conséquence (avec un group by par exemple), soit tu crées un curseur pour traiter chaque ligne ramenée par ta requête, et éventuellement sommer les résultats.

  5. #5
    Membre éclairé Avatar de cashmoney
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    298
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 298
    Par défaut
    Ok, alors commençons par le group by, si je l'ajoute dans ma fonction, tu penses que cela pourrais m'éviter les erreurs en exécution? concernant le curseur ce sera encore un autre parcours alors que là, il suffit d'identifier l'intru. Merci

  6. #6
    Membre expérimenté
    Inscrit en
    Janvier 2009
    Messages
    162
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 162
    Par défaut
    Oui Cashmoney, si tu es certain que ta requête ne ramènera qu'une seule ligne dans tous les cas. Ceci étant dit pour faire propre il faudrait tout de même gérer cette exception (TOO_MANY_ROWS).

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

Discussions similaires

  1. iBatis/Oracle : problème exécution procédure stockée
    Par marinew dans le forum Accès aux données
    Réponses: 6
    Dernier message: 28/02/2011, 15h31
  2. Problème d'exécution procédure insertion
    Par fouz12 dans le forum PL/SQL
    Réponses: 3
    Dernier message: 03/11/2008, 15h20
  3. Problème de procédure objet : Migration de TForm vers TFrame
    Par rvzip64 dans le forum Composants VCL
    Réponses: 3
    Dernier message: 13/06/2005, 13h44
  4. Problème de procédure stockée
    Par Sorcier157 dans le forum Langage SQL
    Réponses: 9
    Dernier message: 17/03/2005, 17h57
  5. [VB.NET] Problème exécution en mode release.
    Par leSeb dans le forum Windows Forms
    Réponses: 2
    Dernier message: 07/01/2005, 17h39

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