A voir également:
- Ora-01422: l'extraction exacte ramène plus que le nombre de lignes demandé
- Oracle liste des tables ✓ - Forum Oracle
- Procédure de bara ✓ - Forum Vos droits sur internet
- Le point d'entrée de procédure est introuvable dans la bibliothèque de liens dynamiques ✓ - Forum Windows
- Le point d'entrée de procédure setdefaultdlldirectories introuvable kernel32.dll ✓ - Forum Windows 7
- Où est stocké le presse-papier - Guide
3 réponses
UaLShark
Messages postés
191
Date d'inscription
vendredi 19 mai 2006
Statut
Membre
Dernière intervention
21 juillet 2010
35
22 avril 2008 à 10:35
22 avril 2008 à 10:35
bonjour touhami,
ora-01422 : Exact fetch return more than one row
c'est pas une exception applicative c'une exception oracle
ça veut dire que ton critére d selection retourne plus q'un enregistrement (un curseur cad)
vérifie que les critère passés en paramètre à la procédure sont éliminatoires (au max 1 ligne de retour)
sinon tu peux m'envoyer le script create table ?
ora-01422 : Exact fetch return more than one row
c'est pas une exception applicative c'une exception oracle
ça veut dire que ton critére d selection retourne plus q'un enregistrement (un curseur cad)
vérifie que les critère passés en paramètre à la procédure sont éliminatoires (au max 1 ligne de retour)
sinon tu peux m'envoyer le script create table ?
Bonjour,
2 solutions au problème indiqué:
soit tu gères l'EXCEPTION oracle dans ta procédure,
soit tu gères cette exception dans ton programme.
Le plus propre est de gérer cela au niveau de la procédure de la sorte:
create or replace procedure recherche_simple_sans_ville (
titre IN varchar,
metier OUT varchar,
objectif OUT varchar,
region OUT varchar,
ville OUT varchar,
type_de_contrat OUT varchar,
duree OUT varchar,
qualification OUT varchar,
langue OUT varchar,
publication OUT varchar,
MESSAGE_ERREUR OUT VARCHAR,
) is
BEGIN
MESSAGE_ERREUR := '' ;
SELECT metier,objectif,region,ville,type_de_contrat,duree,qualification,langue,publication
INTO metier,objectif,region,ville,type_de_contrat,duree,qualification,langue,publication
FROM touhami.cv
WHERE metier LIKE titre ;
exception
WHEN TOO_MANY_ROWS THEN MESSAGE_ERREUR := 'ERREUR: la requête retourne trop d''enregistrements' ;
WHEN NO_DATA_FOUND THEN MESSAGE_ERREUR := 'ERREUR: la requête ne retourne aucune enregistrement' ;
end;
Ensuite, tu peux tester dans ton programme si le champ (MESSAGE_ERREUR <> '') est traité les différents cas.
Sinon, je pense qu'en fait, tu voudrais créer un procédure qui retourne un curseur afin de faire des lectures sucessives ... dans ce cas, tu peux consulter cet article <http://msdn.microsoft.com/fr-fr/library/4s2zbbsz(VS.80).aspx> (cet exemple est plus ou moins bien réalisé mais l'idée est présente).
Bonne continuation.
2 solutions au problème indiqué:
soit tu gères l'EXCEPTION oracle dans ta procédure,
soit tu gères cette exception dans ton programme.
Le plus propre est de gérer cela au niveau de la procédure de la sorte:
create or replace procedure recherche_simple_sans_ville (
titre IN varchar,
metier OUT varchar,
objectif OUT varchar,
region OUT varchar,
ville OUT varchar,
type_de_contrat OUT varchar,
duree OUT varchar,
qualification OUT varchar,
langue OUT varchar,
publication OUT varchar,
MESSAGE_ERREUR OUT VARCHAR,
) is
BEGIN
MESSAGE_ERREUR := '' ;
SELECT metier,objectif,region,ville,type_de_contrat,duree,qualification,langue,publication
INTO metier,objectif,region,ville,type_de_contrat,duree,qualification,langue,publication
FROM touhami.cv
WHERE metier LIKE titre ;
exception
WHEN TOO_MANY_ROWS THEN MESSAGE_ERREUR := 'ERREUR: la requête retourne trop d''enregistrements' ;
WHEN NO_DATA_FOUND THEN MESSAGE_ERREUR := 'ERREUR: la requête ne retourne aucune enregistrement' ;
end;
Ensuite, tu peux tester dans ton programme si le champ (MESSAGE_ERREUR <> '') est traité les différents cas.
Sinon, je pense qu'en fait, tu voudrais créer un procédure qui retourne un curseur afin de faire des lectures sucessives ... dans ce cas, tu peux consulter cet article <http://msdn.microsoft.com/fr-fr/library/4s2zbbsz(VS.80).aspx> (cet exemple est plus ou moins bien réalisé mais l'idée est présente).
Bonne continuation.