Précédent   Forum des professionnels en informatique > Bases de données > Oracle > PL/SQL
PL/SQL Forum d'entraide sur le PL/SQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 20/01/2011, 12h47   #1
Membre régulier
 
Inscription : février 2008
Messages : 676
Détails du profil
Informations forums :
Inscription : février 2008
Messages : 676
Points : 80
Points : 80
Par défaut Comment Eviter ORA-01403(aucune donnée trouvée)

Salut
J'ai un problème lorsque j'effectue un select avec une clause WHERE qui ne retourne aucune donnée.Dans ce cas une exception NO_DATA_FOUND (ORA-01403) est générée.
J'ai trouvé aprés des recherches que l'utilisation de la fonction DECODE peut contourner ce problème.
j'ai alors testé:
Code :
SELECT DECODE (MA_COLONNE,NULL,'0',MA_COLONNE) INTO MA_VARIABLE...
je m'attendais à ce MA_VARIABLE prenne 0 si pas de données trouvés , mais toujours c'est l'exception NO_DATA_FOUND (ORA-01403) qui est générée.
riadhhwajdii est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/01/2011, 13h17   #2
Membre à l'essai
 
Inscription : mars 2007
Messages : 59
Détails du profil
Informations forums :
Inscription : mars 2007
Messages : 59
Points : 24
Points : 24
Code :
1
2
3
4
5
6
7
BEGIN
 
EXCEPTION WHEN NO_DATA_FOUND THEN
 
       ....
 
END;
Ujitsu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/01/2011, 13h25   #3
Membre régulier
 
Inscription : février 2008
Messages : 676
Détails du profil
Informations forums :
Inscription : février 2008
Messages : 676
Points : 80
Points : 80
Merci pour la réponse, mais je la connais et ce que je veux est éviter l'utilisation du bloc EXCEPTION.
riadhhwajdii est déconnecté   Envoyer un message privé Réponse avec citation 01
Vieux 20/01/2011, 13h42   #4
McM
Expert Confirmé Sénior
 
Inscription : juillet 2003
Messages : 3 437
Détails du profil
Informations forums :
Inscription : juillet 2003
Messages : 3 437
Points : 4 173
Points : 4 173
Utilise une fonction de groupe (MAX / MIN, etc...) sur ta colonne => pas d'erreur NO_DATA_FOUND
__________________
More Code : More Bugs. Less Code : Less Bugs
McM est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/01/2011, 09h20   #5
Membre Expert
 
Avatar de Garuda
 
Homme Philippe CHIRCOP
Chef de projet
Inscription : juin 2007
Messages : 1 109
Détails du profil
Informations personnelles :
Nom : Homme Philippe CHIRCOP
Localisation : France

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

Informations forums :
Inscription : juin 2007
Messages : 1 109
Points : 1 559
Points : 1 559
Citation:
Envoyé par riadhhwajdii Voir le message
Merci pour la réponse, mais je la connais et ce que je veux est éviter l'utilisation du bloc EXCEPTION.
Et pourtant, gérer les exceptions , c'est une bonne pratique !!!
__________________
Garuda गरूड
Brahmâ la Guerre et Vishnu la Paix

Oracle 10.2.0.4 - Forms6i patch 17 - Toad 11.1 - sharePoint 2010
Garuda est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 21/01/2011, 11h44   #6
Expert Confirmé Sénior
 
Avatar de mnitu
 
Homme Marius Nitu
Ingénieur développement logiciels
Inscription : octobre 2007
Messages : 3 311
Détails du profil
Informations personnelles :
Nom : Homme Marius Nitu
Localisation : France, Marne (Champagne Ardenne)

Informations professionnelles :
Activité : Ingénieur développement logiciels
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : octobre 2007
Messages : 3 311
Points : 5 808
Points : 5 808
Si vous ne voulez pas gérer l'Exception NO_DATA_FOUND utiliser un curseur explicite à la place du Select ... Into ...
mnitu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/01/2011, 11h37   #7
Membre confirmé
 
Homme Grégoire MARTIN
Ingénieur développement logiciels
Inscription : janvier 2011
Messages : 128
Détails du profil
Informations personnelles :
Nom : Homme Grégoire MARTIN
Âge : 32
Localisation : France, Hauts de Seine (Île de France)

Informations professionnelles :
Activité : Ingénieur développement logiciels
Secteur : Finance

Informations forums :
Inscription : janvier 2011
Messages : 128
Points : 225
Points : 225
Sinon tu peux utiliser l'astuce suivante

Code :
1
2
3
 
 
SELECT NVL ( (mon sous SELECT ) , 0 ) INTO ma variable FROM dual ;
ORA-007 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/01/2011, 12h06   #8
Expert Confirmé Sénior
 
Avatar de mnitu
 
Homme Marius Nitu
Ingénieur développement logiciels
Inscription : octobre 2007
Messages : 3 311
Détails du profil
Informations personnelles :
Nom : Homme Marius Nitu
Localisation : France, Marne (Champagne Ardenne)

Informations professionnelles :
Activité : Ingénieur développement logiciels
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : octobre 2007
Messages : 3 311
Points : 5 808
Points : 5 808
Vous voulez dire "mon sous select qui ramène zéro ou une seule ligne" en fait.
C’est à éviter.
mnitu est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 00h05.


 
 
 
 
Partenaires

Hébergement Web