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

Outils Oracle Discussion :

[10g] Cherche outil pour débugguer procédure stockée


Sujet :

Outils Oracle

  1. #1
    Expert éminent
    Avatar de Lung
    Profil pro
    Analyste-programmeur
    Inscrit en
    Mai 2002
    Messages
    2 664
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste-programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 664
    Points : 6 967
    Points
    6 967
    Par défaut [10g] Cherche outil pour débugguer procédure stockée
    Voici mon problème :
    J'ai une procédure stockée Oracle qui ne me renvoie pas le résultat attendu. Donc, je voudrais faire du pas-à-pas (avec des points d'arrêt conditionnels), et évaluer la valeur des variables.

    - J'ai essayé avec SQL Développeur (version 1.1.2.25), mais au bout de 20 minutes, il est toujours en train de faire semblant d'exécuter ma procédure, et ne répond plus.
    - J'ai téléchargé Toad free, mais je n'ai pas trouvé les outils de débugage. Je suppose qu'il faut la version payante, ce qui est exclu.

    Quelqu'un connaitrait-il un autre outil (gratuit) pour débuguer ma procédure ?

    L'urgent est fait, l'impossible est en cours, pour les miracles prévoir un délai. ___ Écrivez dans un français correct !!

    C++Builder 5 - Delphi 6#2 Entreprise - Delphi 2007 Entreprise - Delphi 2010 Architecte - Delphi XE Entreprise - Delphi XE7 Entreprise - Delphi 10 Entreprise - Delphi 10.3.2 Entreprise - Delphi 10.4.2 Entreprise - Delphi 11.1 Entreprise
    OpenGL 2.1 - Oracle 10g - Paradox - Interbase (XE) - PostgreSQL (15.4)

  2. #2
    Membre habitué Avatar de Loyd1974
    Profil pro
    Inscrit en
    Août 2007
    Messages
    176
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 176
    Points : 196
    Points
    196
    Par défaut
    PLSQL Developer
    Alors c'est pas gratuit, mais on peut télécharger une version de démo complète valable pendant 30j, c'est largement suffisant pour tomber accro et faire des pieds et des mains pour que le père noël nous offre une licence :

    http://www.allroundautomations.com/plsqldev.html

  3. #3
    Expert éminent
    Avatar de Lung
    Profil pro
    Analyste-programmeur
    Inscrit en
    Mai 2002
    Messages
    2 664
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste-programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 664
    Points : 6 967
    Points
    6 967
    Par défaut


    Je vais voir ça ...
    L'urgent est fait, l'impossible est en cours, pour les miracles prévoir un délai. ___ Écrivez dans un français correct !!

    C++Builder 5 - Delphi 6#2 Entreprise - Delphi 2007 Entreprise - Delphi 2010 Architecte - Delphi XE Entreprise - Delphi XE7 Entreprise - Delphi 10 Entreprise - Delphi 10.3.2 Entreprise - Delphi 10.4.2 Entreprise - Delphi 11.1 Entreprise
    OpenGL 2.1 - Oracle 10g - Paradox - Interbase (XE) - PostgreSQL (15.4)

  4. #4
    Expert éminent
    Avatar de Lung
    Profil pro
    Analyste-programmeur
    Inscrit en
    Mai 2002
    Messages
    2 664
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste-programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 664
    Points : 6 967
    Points
    6 967
    Par défaut
    Bin, c'est pas intuitif tout ça ...

    Comment on exécute une procédure ?
    Comment on lui donne ses paramètres ?

    (Pour les points d'arrêts conditionnel, je crois avoir trouvé)
    L'urgent est fait, l'impossible est en cours, pour les miracles prévoir un délai. ___ Écrivez dans un français correct !!

    C++Builder 5 - Delphi 6#2 Entreprise - Delphi 2007 Entreprise - Delphi 2010 Architecte - Delphi XE Entreprise - Delphi XE7 Entreprise - Delphi 10 Entreprise - Delphi 10.3.2 Entreprise - Delphi 10.4.2 Entreprise - Delphi 11.1 Entreprise
    OpenGL 2.1 - Oracle 10g - Paradox - Interbase (XE) - PostgreSQL (15.4)

  5. #5
    Membre habitué Avatar de Loyd1974
    Profil pro
    Inscrit en
    Août 2007
    Messages
    176
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 176
    Points : 196
    Points
    196
    Par défaut
    Citation Envoyé par Lung Voir le message
    Bin, c'est pas intuitif tout ça ...

    Comment on exécute une procédure ?
    Comment on lui donne ses paramètres ?

    (Pour les points d'arrêts conditionnel, je crois avoir trouvé)
    Tu ouvres le panneau navigateur, tu recherche ta procédure stockée, et avec le clic droit, tu l'ouvre en édition et tu poses tes points d'arrêts (ne pas oublié de le recompiler pour que cela soit pris en compte)

    Ensuite, tu te positionnes sur le nom de ta procédure et tu fais clic-droit et tu choisis tester, il va te créer une fenêtre de test, tu renseignes les variables qui seront dans la liste en bas, et tu fais F9 (ou bien tu cliques sur le bouton symbolisé par un engrenage surmontée d'une loupe)

    Il faut que tu ais les droits de débugger bien sûr, sinon, cela ne marche pas (c'est un GRANT à faire, si je me rappelle bien)

    Tu peux télécharger la traduction en français, cela le rend plus facile d'accès, mais normalement, si tu codes ou débugges beaucoup, il va vite devenir indispensable

  6. #6
    Membre habitué Avatar de Loyd1974
    Profil pro
    Inscrit en
    Août 2007
    Messages
    176
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 176
    Points : 196
    Points
    196
    Par défaut
    Autre chose aussi, PLSQL developper va ouvrir une session par fenêtre dans son paramétrage par défaut, donc sans commit, tu ne vois pas dans une fenêtre le résultat d'un INSERT ou d'un update fait par une autre

    Quand tu cliques sur nouveau, tu as plusieurs choix possible, les 4 principaux sont :
    • Fenêtre SQL : Cela simule une session SQL*PLUS, le résultat de la requête s'affiche directement en bas de la fenêtre
    • Fenêtre Test : celle qu'on utilise le plus, elle permet de définir des variables (déclarée avec les ":") et ainsi de tester package, procédure ou même simplement une requête avec différentes valeurs d'un filtre.Le résultat se trouve dans l'onglet Sortie DBMS si on fait du DBMS_OUTPUT ou dans l'onglet Sortie SQL, si on teste une requête simple. A noter, qu'un clic droit sur la partie de la fenetre où sont déclaré les variables permet d'accéder à la fonctionnalitées Analyser les variables qui va te créer directement toutes les variables définies dans ton code.
    • Fenêtre Plan d'exécution : porte bien son nom, un raccourci par défaut existe pour trouver le plan d'exécution d'une requête quand on est dans une fenêtre SQL, il s'agit de la touche F5 (la touche F8 étant le raccourci pour exécuter la requête)
    • Fenêtre Programme : à utiliser généralement quand on crée une fonction, un package ou autre à partir de rien.
    Si tu as d'autres questions, n'hésite pas

  7. #7
    Expert éminent
    Avatar de Lung
    Profil pro
    Analyste-programmeur
    Inscrit en
    Mai 2002
    Messages
    2 664
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste-programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 664
    Points : 6 967
    Points
    6 967
    Par défaut
    Citation Envoyé par Loyd1974 Voir le message
    Ensuite, tu te positionnes sur le nom de ta procédure et tu fais clic-droit et tu choisis tester
    Ah oui. Fallait le deviner ...

    Bon, j'ai fais comme tu m'a dis.
    L'exécution démarre, et là il me dit que la variable de ma condition (du point d'arrêt) n'est pas défini.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
       begin
          for Cur in (select HIST_CONTENANT.* from HIST_CONTENANT, TYPE_CONTENANT
                      where HIST_CONTENANT.ID_TYPE_CONTENANT = TYPE_CONTENANT.ID_TYPE_CONTENANT
                      and ID_FAMILLE_CONTENANT = 1) loop
             begin
                -- Recherche du premier mouvement.
                begin
                   select DATE_OPE into DateOperation  <-- Point d'arrêt ICI : condition : Cur.CODE_CONTENANT = 'H0029556700'
                   from (
                      select DATE_OPE, min(INDICE)
                      from HIST_MVT_CONT
                      where CODE_CONTENANT = Cur.CODE_CONTENANT
                      and ROWNUM = 1
                      group by DATE_OPE);
                exception
                   when OTHERS then
                      raise_application_error(-20005, SQLERRM);
                end;
     
    ...
    Je ne comprend pas ce qu'il réclame, sachant que ma procédure fonctionne.
    Je l'ai déjà exécutée plusieurs fois sans problème.


    Citation Envoyé par Loyd1974 Voir le message
    Tu peux télécharger la traduction en français, cela le rend plus facile d'accès, mais normalement, si tu codes ou débugges beaucoup, il va vite devenir indispensable
    C'est sûr que si j'arrive à débuguer comme je veux, je ne pourrai plus m'en passer. Mais, comme c'est payant, il faudra bien ...
    L'urgent est fait, l'impossible est en cours, pour les miracles prévoir un délai. ___ Écrivez dans un français correct !!

    C++Builder 5 - Delphi 6#2 Entreprise - Delphi 2007 Entreprise - Delphi 2010 Architecte - Delphi XE Entreprise - Delphi XE7 Entreprise - Delphi 10 Entreprise - Delphi 10.3.2 Entreprise - Delphi 10.4.2 Entreprise - Delphi 11.1 Entreprise
    OpenGL 2.1 - Oracle 10g - Paradox - Interbase (XE) - PostgreSQL (15.4)

  8. #8
    Membre habitué Avatar de Loyd1974
    Profil pro
    Inscrit en
    Août 2007
    Messages
    176
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 176
    Points : 196
    Points
    196
    Par défaut
    Voici ce que dit la doc à propose des conditions des points d'arrêts :

    Utiliser condition – La case à cocher active ou désactive la condition. La condition doit être une expression booléenne. Lorsque la ligne du point d'arrêt est atteinte, l'exécution est interrompue uniquement si la condition est vraie. Vous pouvez utiliser n'importe quelle expression SQL dans la condition, et vous pouvez utiliser n'importe quelle variable connue à l'emplacement du point d'arrêt. Il s'agit des mêmes variables que celles que vous pouvez visionner ou définir au cours d'un débogage interactif. Les variables doivent être précédées d'un double point. Par exemple upper(:ename) = ‘
    SMITH’ est une condition valide si ename est une variable valide à l'emplacement du point d'arrêt.

    Est-ce que tu as bien mis les double point ?

  9. #9
    Expert éminent
    Avatar de Lung
    Profil pro
    Analyste-programmeur
    Inscrit en
    Mai 2002
    Messages
    2 664
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste-programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 664
    Points : 6 967
    Points
    6 967
    Par défaut
    Citation Envoyé par Loyd1974 Voir le message
    Est-ce que tu as bien mis les double point ?

    Pas pensé aux deux-points.

    Ca s'exécute ...

    L'urgent est fait, l'impossible est en cours, pour les miracles prévoir un délai. ___ Écrivez dans un français correct !!

    C++Builder 5 - Delphi 6#2 Entreprise - Delphi 2007 Entreprise - Delphi 2010 Architecte - Delphi XE Entreprise - Delphi XE7 Entreprise - Delphi 10 Entreprise - Delphi 10.3.2 Entreprise - Delphi 10.4.2 Entreprise - Delphi 11.1 Entreprise
    OpenGL 2.1 - Oracle 10g - Paradox - Interbase (XE) - PostgreSQL (15.4)

  10. #10
    McM
    McM est déconnecté
    Expert éminent

    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Juillet 2003
    Messages
    4 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Juillet 2003
    Messages : 4 580
    Points : 7 740
    Points
    7 740
    Billets dans le blog
    4
    Par défaut
    Si c'est juste pour voir des variables, tu as toujours l'option du DBMS_OUPUT.
    More Code : More Bugs. Less Code : Less Bugs
    Mon Blog PL/Sql : Fichier Zip / Image BMP / Lire sqliteDB / QRCode et Images PNG ou BMP

  11. #11
    Expert éminent
    Avatar de Lung
    Profil pro
    Analyste-programmeur
    Inscrit en
    Mai 2002
    Messages
    2 664
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste-programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 664
    Points : 6 967
    Points
    6 967
    Par défaut
    Citation Envoyé par McM Voir le message
    Si c'est juste pour voir des variables, tu as toujours l'option du DBMS_OUPUT.
    C'est vrai, mais c'est moins pratique.

    Bon Loyd1974, PLSQL Developper fonctionne, mais pas vite.
    Il a mit plus de 3 heures pour faire tourner ma procédure qui en exécution normale, met moins de 5 minutes. Mais, lui au moins, il a pas planté comme SQL Developper d'Oracle.

    L'urgent est fait, l'impossible est en cours, pour les miracles prévoir un délai. ___ Écrivez dans un français correct !!

    C++Builder 5 - Delphi 6#2 Entreprise - Delphi 2007 Entreprise - Delphi 2010 Architecte - Delphi XE Entreprise - Delphi XE7 Entreprise - Delphi 10 Entreprise - Delphi 10.3.2 Entreprise - Delphi 10.4.2 Entreprise - Delphi 11.1 Entreprise
    OpenGL 2.1 - Oracle 10g - Paradox - Interbase (XE) - PostgreSQL (15.4)

  12. #12
    Membre habitué Avatar de Loyd1974
    Profil pro
    Inscrit en
    Août 2007
    Messages
    176
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 176
    Points : 196
    Points
    196
    Par défaut
    Citation Envoyé par Lung Voir le message
    Bon Loyd1974, PLSQL Developper fonctionne, mais pas vite.
    Il a mit plus de 3 heures pour faire tourner ma procédure qui en exécution normale, met moins de 5 minutes. Mais, lui au moins, il a pas planté comme SQL Developper d'Oracle.

    Whaouh, aussi long !!
    Bon, c'est vrai que je ne développe plus trop et que je fais rarement du débogage mais je n'ai jamais eu de tels comportements
    C'est peut être le breakpoint conditionné ? Je n'ai jamais utilisé cette option ...mystère
    Il faudrait voir si au lieu de mettre un breakpoint conditionné, tu pourrais mettre un IF dans ton code avec une ligne bidon qui sera ton breakpoint et de là, tu pourras faire du pas à pas. Peut-être qu'ainsi ce sera plus rapide ?

Discussions similaires

  1. Plusieurs colonnes pour une procédure stockée.
    Par Helau dans le forum PostgreSQL
    Réponses: 2
    Dernier message: 22/01/2008, 15h25
  2. cherche outils pour site WAP
    Par young077 dans le forum Autres langages pour le Web
    Réponses: 2
    Dernier message: 19/08/2007, 13h55
  3. Aide pour une procédure stockée
    Par shirya dans le forum Langage SQL
    Réponses: 1
    Dernier message: 02/03/2007, 08h48
  4. Quel choix d'Editeur pour des Procédures Stockées ?
    Par Péchereau dans le forum SQL Procédural
    Réponses: 1
    Dernier message: 28/02/2007, 08h57
  5. Réponses: 2
    Dernier message: 03/12/2006, 12h37

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