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 :

Retrouver ligne en erreur


Sujet :

SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé Avatar de shaun_the_sheep
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Octobre 2004
    Messages
    1 619
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2004
    Messages : 1 619
    Par défaut Retrouver ligne en erreur
    Bonjour,

    j'ai une fonction SQL qui me remonte une erreur due à un souci de données.
    cette fonction balaye beaucoup de lignes de données.

    je cherche un moyen d'identifier la ligne de données qui me pose souci.

    comment puis-je faire ?

  2. #2
    Expert confirmé Avatar de mnitu
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    5 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    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 : 5 611
    Par défaut
    Très vague comme information.
    Utilisez un gestionnaire d'exception dans votre fonction pour stocker l'information permettant d'identifier votre enregistrement.
    Ou cherchez-vous même les lignes qui peuvent provoquer l'erreur en SQL en appliquant les transformations nécessaires à vos données.

  3. #3
    LEK
    LEK est déconnecté
    Membre éclairé
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    715
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 715
    Par défaut
    Vous pouvez peut être décomposer le traitement pour qu'il s'exécute ligne par ligne si le problème vient d'un traitement en masse...
    Il y a aussi la clause log errors qui peut vous venir en aide...
    Tout dépend de votre problème et de votre implémentation actuels....

  4. #4
    Membre éprouvé Avatar de shaun_the_sheep
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Octobre 2004
    Messages
    1 619
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2004
    Messages : 1 619
    Par défaut
    bonjour,

    en fait je cherche une solution de "debug" que je pourrais utiliser de façon récurrente quand je rencontre ce souci.

    j'ai dans ce cas une fonction Oracle SQL qui me permet de renvoyer un état en fonction d'éléments métiers dans mes tables.

    La fonction fonctionne ...

    Je l'appelle comme suit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Select Ma_Fonction(....) From Dual
    Parce qu'un de mes tests me renvoie plusieurs lignes ma fonction tombe en erreur.....

    Je cherche à identifier la ligne de données qui génère cette erreur car d'un point de vue métier ce n'est pas normal ...

    Je me demandais s'il existait des traitements d'exception d'erreur en SQL comme en java ou autre .... ou des logs.

    Merci à vous

  5. #5
    Membre expérimenté Avatar de dariyoosh
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    236
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 236
    Par défaut
    Bonjour,


    Citation Envoyé par shaun_the_sheep Voir le message
    Je l'appelle comme suit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Select Ma_Fonction(....) From Dual
    Parce qu'un de mes tests me renvoit plusieurs lignes ma fonction tombe en erreur.....
    On peut voir votre code?


    Je me demandais si il existait des traitements d'exception d'erreur en SQL comme en java ou autre .... ou des logs.
    En PL/SQL on peut gérer les exceptions et voici le lien vers la documentation

    http://docs.oracle.com/cd/E11882_01/...s.htm#CHDFGBJI



    Cordialement,
    Dariyoosh

  6. #6
    Membre éprouvé Avatar de shaun_the_sheep
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Octobre 2004
    Messages
    1 619
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2004
    Messages : 1 619
    Par défaut
    Je reporte l'erreur renvoyé lors de l’exécution de ma requête.

    ORA-01422: l'extraction exacte ramène plus que le nombre de lignes demandé
    ORA-06512: à ".....", ligne 32
    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
    Puis je exploiter ce type d'erreur dans une exception et obtenir l'enregistrement qui me pose problème ?

    Merci de votre aide.

  7. #7
    Membre éprouvé Avatar de shaun_the_sheep
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Octobre 2004
    Messages
    1 619
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2004
    Messages : 1 619
    Par défaut
    je commence à utiliser les exceptions .....

    j'ai ajouté cela :

    Au début de ma fonction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
          -- Ouverture du tampon --
          DBMS_OUTPUT.ENABLE( 1000000 ) ;
    Et avant le return de ma fonction ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    .....
    EXCEPTION
      WHEN TOO_MANY_ROWS THEN
        DBMS_OUTPUT.PUT( 'UID = ' || PART_UID);
        RETURN 2;
    Ma fonction me renvoit bien une ligne avec la valeur 2 au lieu de 1 ou 0 , donc mon exception semble fonctionner.

    Je suis sous SQL Developper , j'ai activé la sortie SGBD ... mais je ne vois pas le résultat de :
    DBMS_OUTPUT.PUT( 'UID = ' || PART_UID);

    quelqu'un peut il m'aider ?

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

Discussions similaires

  1. [C# 2.0] Retrouver ligne dans checkboxlist
    Par lenoil dans le forum Windows Forms
    Réponses: 4
    Dernier message: 13/11/2007, 11h40
  2. Affichage numéro de ligne d'erreur
    Par kuja2053 dans le forum Langage
    Réponses: 2
    Dernier message: 10/07/2007, 23h56
  3. explication d'une ligne d'erreur DEV
    Par katia_heraklion dans le forum C
    Réponses: 2
    Dernier message: 26/03/2007, 19h26
  4. Pb de select : retrouver lignes identiques
    Par lamf dans le forum Requêtes
    Réponses: 11
    Dernier message: 07/01/2006, 20h53
  5. [xml] Récupérer le numéro de la ligne d'erreur d'un fichier
    Par ZoumZoumMan dans le forum C++Builder
    Réponses: 7
    Dernier message: 20/03/2004, 19h09

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