ORA-01403: pas de données disponibles pour Sélectionner dans
Je suis ORA-01403: no data found
exception pour la requête suivante. Quelles sont les possibilités de cette erreur?
SELECT trim(name)
INTO fullname
FROM ( SELECT n.name
FROM directory dir, store n
WHERE dir.name = n.name
AND dir.status NOT IN ('F', 'L', 'M')
ORDER BY n.imp, dir.date)
WHERE rownum <= 1;
Comment puis-je gérer cette erreur?
ORA-01403: pas de données disponibles se produit lorsque vous SÉLECTIONNEZ et aucune ligne n'est retournée.
- Vous nous dire.. Avez-vous vérifié pour les données dans le répertoire où le STATUT de not IN ('F','L','M')? Avez-vous vérifié les données dans le magasin pour nom extraite de l'annuaire?
Oui... j'ai vérifié les deux valeurs. Obtenir au moins une valeur.
il semble y avoir un bug, au moins dans notre
- Vous nous dire.. Avez-vous vérifié pour les données dans le répertoire où le STATUT de not IN ('F','L','M')? Avez-vous vérifié les données dans le magasin pour nom extraite de l'annuaire?
Oui... j'ai vérifié les deux valeurs. Obtenir au moins une valeur.
il semble y avoir un bug, au moins dans notre
Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit
environnement avec elle!: function bar return varchar2 as x dual%rowtype; begin select * into x from dual where 1=0; return 'test'; end;
renvoie normalement sans erreur et en revenant pas de résultats :-/ .. juste parce que capture NO_DATA_FOUND explicitement à l'œuvre ici, comme mentionné dans Sandeeps réponse: stackoverflow.com/a/21186642/1915920OriginalL'auteur NaaN | 2014-01-17
Vous devez vous connecter pour publier un commentaire.
Bien que vous avez mis dans la condition where, mais de la meilleure façon serait de gérer les cas d'enregistrement non trouvé ou "Pas de Données disponibles' erreur. Je voudrais écrire de code ci-dessus avec du papier d'emballage de l'instruction SELECT avec ses propres COMMENCER/EXCEPTION/FIN de bloc.
Code pourrait être quelque chose comme ceci:
Essayé de poster la réponse dans un commentaire, mais il est en train de perdre de l'indentation lors de posté un commentaire. Donc ajouté de l'extrait de code dans ma réponse ci-dessus.
Merci. Ce qui se passe si on n'a pas mis
fullName = NULL;
dans le côté le bloc d'exception?C'est juste une place de titulaire. Vous pouvez gérer cette erreur selon votre logique.
Merci, cela fonctionne
OriginalL'auteur Sandeep
Si la norme de gestion des exceptions décrit par Sandeep semble beaucoup généraux (comme dans mon cas) et vous êtes fine avec un
NULL
ou certains <a pas trouvé> valeur), vous pourriez transformer comme ceci:=> pas de ORA-01403 soulevées:
TRÈS SAGE DÉCISION!
OriginalL'auteur Andreas Dietrich
Probablement parce que votre Requête
n'est pas de retourner toutes les lignes
OriginalL'auteur Arnab Bhagabati
Si
dir.status
a des valeurs null dans votre tableau, puisnot in
est probablement pas ce que vous pensez qu'elle est. Vous pouvez obtenir des lignes nulles, même si vous pensez que vous devriez obtenir une ou plusieurs lignes. Vous pouvez passer àand not (dir.status in ('F,'L','M'))
au lieu dedir.status not in ('F','L','M')
.Voir cette de référence.
OriginalL'auteur GriffeyDog