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 ?
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 ?
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.
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....
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 :
Parce qu'un de mes tests me renvoie plusieurs lignes ma fonction tombe en erreur.....
Code : Sélectionner tout - Visualiser dans une fenêtre à part Select Ma_Fonction(....) From Dual
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
Bonjour,
On peut voir votre code?
En PL/SQL on peut gérer les exceptions et voici le lien vers la documentationJe me demandais si il existait des traitements d'exception d'erreur en SQL comme en java ou autre .... ou des logs.
http://docs.oracle.com/cd/E11882_01/...s.htm#CHDFGBJI
Cordialement,
Dariyoosh
Cordialement,
Dariyoosh
Je reporte l'erreur renvoyé lors de l’exécution de ma requête.
Puis je exploiter ce type d'erreur dans une exception et obtenir l'enregistrement qui me pose problème ?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
Merci de votre aide.
je commence à utiliser les exceptions .....
j'ai ajouté cela :
Au début de ma fonction :
Et avant le return de ma fonction ceci :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 -- Ouverture du tampon -- DBMS_OUTPUT.ENABLE( 1000000 ) ;
Ma fonction me renvoit bien une ligne avec la valeur 2 au lieu de 1 ou 0 , donc mon exception semble fonctionner.
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;
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 ?
Utilisez DBMS_OUTPUT.PUT_LINE au lieu de DBMS_OUTPUT.PUT.
Email : http://scr.im/waldar
Merci ....
En faite c'est SQL Developper qui n'affiche pas bien les résultats.
comme s'il n'y avait pas de rafraîchissement d'affichage.
Si je recomplile ma fonction par exemple , tout s'affiche ....
J'ai la version 3.1.07
Y a un truc ?
As-tu fait un "Set severoutput on" pour afficher le résultat de ton display Dbms_output.put_line ?
Oui mais via l'interface de sqldevelopper ....
je vais essayer par la commande.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager