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

Forms Oracle Discussion :

Trigger erreur ORA-01422( exact fetch returns more than requested number of rows. )


Sujet :

Forms Oracle

  1. #1
    Membre régulier Avatar de King_T
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2006
    Messages
    157
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2006
    Messages : 157
    Points : 121
    Points
    121
    Par défaut Trigger erreur ORA-01422( exact fetch returns more than requested number of rows. )
    salut a tous,
    je travail avec form 6 et oracle 8, j'ai crée un déclencheur (trigger) pour contrôler l'ajout des adhérents :
    voici le code du trigguer :
    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
     
    declare 
    	nom adherant.nom_ad%type;
    	existe exception;
      al_button Number;
      al_id     Alert; 
    begin 
    	select nom_ad into nom
    	from adherant 
    	where nom_ad=:adherant1.nom_ad
    	and pre_ad=:adherant1.pre_ad;
    	if nom<>'' 
    	then raise existe;
    	end if;
    exception
    when existe then 
      al_id:= Find_Alert('ALERTE1'); 
      al_button:= SHOW_ALERT  (al_id);
    end;
    lors de son exécution form me sort l'erreur suivante : ORA-01422 (exact fetch returns more than requested number of rows. ) ce qui est impossible car j'ai un seul enregistrement dans la base!!!

    ce qui est sur c'est que le probleme vient de de la première requête car j'ai enlever la partie "exception" et le résultat est le même !!!
    merci pour votre aide
    Dreaming in Digital, Living in Realtime, Thinking in Binary, Talking in IP .... Welcome to our World !!!!

  2. #2
    Expert éminent sénior
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 073
    Points
    19 073
    Par défaut
    le SELECT retourne plus d'une ligne

    Sinon attention :

    est différent de

    juste pour info

  3. #3
    Membre régulier Avatar de King_T
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2006
    Messages
    157
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2006
    Messages : 157
    Points : 121
    Points
    121
    Par défaut
    oui, j'ai compris que ma requête retourne plusieurs lignes.
    mais je ne comprend pas pour quoi, j'ai même repris cette requête sur SQL+, elle a retourné une seul ligne.
    j'ai même mis cette requête (avec les valeurs) dans le form et j'ai toujours la même erreur !!!
    Dreaming in Digital, Living in Realtime, Thinking in Binary, Talking in IP .... Welcome to our World !!!!

  4. #4
    Expert éminent sénior
    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
    Points : 11 862
    Points
    11 862
    Par défaut
    Vérifier que la connexion dans Forms pointe bien vers la même base que celle utilisée par Sql+. Vous pouvez faire un Select count(*) Into ... dans votre trigger pour vous en assurer.
    Rédacteur Oracle (Oracle ACE)
    Guide Oracle ,Guide PL/SQL, Guide Forms 9i/10g, Index de recherche
    Je ne réponds pas aux questions techniques par MP
    Blogs: Forms-PL/SQL-J2EE - Forms Java Beans

  5. #5
    Membre chevronné Avatar de Garuda
    Homme Profil pro
    Chef de projet / Urbaniste SI
    Inscrit en
    Juin 2007
    Messages
    1 285
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet / Urbaniste SI
    Secteur : Bâtiment

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 285
    Points : 2 071
    Points
    2 071
    Par défaut
    Inutile de ramener le nom pour faire un test d'existence d'icelui !
    A mon avis, c'est plus propre de faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    cpt INTEGER;
    BEGIN
    SELECT count(*) INTO cpt
        FROM adherant 
        WHERE upper(nom_ad)=upper(:adherant1.nom_ad)
        AND upper(pre_ad)=upper(:adherant1.pre_ad);
    /* TESTER SANS TENIR COMPTE DE LA CASSE !*/  
    IF cpt>0 THEN 
     al_button:= SHOW_ALERT  (Find_Alert('ALERTE1')); 
    End IF;
    Garuda गरूड
    Brahmâ la Guerre et Vishnu la Paix

    Oracle 12C R2 - Forms11GR2 - Toad 12 - sharePoint 2010

  6. #6
    Expert éminent sénior
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 073
    Points
    19 073
    Par défaut
    le plus propre c'est bien EXIST et pas COUNT pour tester l'existence.

  7. #7
    Membre chevronné Avatar de Garuda
    Homme Profil pro
    Chef de projet / Urbaniste SI
    Inscrit en
    Juin 2007
    Messages
    1 285
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet / Urbaniste SI
    Secteur : Bâtiment

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 285
    Points : 2 071
    Points
    2 071
    Par défaut
    orafrance, tu veux faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Select 1 INTO CPT
    from dual where exists (
    SELECT 1
        FROM adherant 
        WHERE upper(nom_ad)=upper(:adherant1.nom_ad)
        AND upper(pre_ad)=upper(:adherant1.pre_ad));
    Un peu compliqué , dans du forms ! Et pas trés lisible !
    Mais en théorie, c'est vrai que le EXISTS est plus rapide .
    Chez moi je fais le même genre de controle sur l'existence d'un nom dans Forms avec COUNT : c'est immediat (2500 enregistrements) !
    Garuda गरूड
    Brahmâ la Guerre et Vishnu la Paix

    Oracle 12C R2 - Forms11GR2 - Toad 12 - sharePoint 2010

  8. #8
    Expert éminent sénior
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 073
    Points
    19 073
    Par défaut
    fait la même chose dans une table de 1 ligne dans laquelle tu auras supprimé 1000000 lignes et tu comprendras le soucis

  9. #9
    Membre chevronné Avatar de Garuda
    Homme Profil pro
    Chef de projet / Urbaniste SI
    Inscrit en
    Juin 2007
    Messages
    1 285
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet / Urbaniste SI
    Secteur : Bâtiment

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 285
    Points : 2 071
    Points
    2 071
    Par défaut
    Supprimer un million d'adhèrents d'un coup (déja faut les avoir !) ?
    Ca existe , dans la vraie vie ?
    Et s'il ne reste qu'un adhèrent, King_T peut pointer au chomage !
    Bon je plaisante, ne m'en tiens pas rigueur !
    Garuda गरूड
    Brahmâ la Guerre et Vishnu la Paix

    Oracle 12C R2 - Forms11GR2 - Toad 12 - sharePoint 2010

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 18/06/2010, 10h52
  2. 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
  3. Réponses: 2
    Dernier message: 12/12/2007, 15h08
  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