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 Firebird Discussion :

Obtenir les détails d'une sous-procédure stockée


Sujet :

Outils Firebird

  1. #1
    Membre à l'essai
    Obtenir les détails d'une sous-procédure stockée
    Bonjour,

    Comment puis-je savoir quels sont les arguments définis quand une sous-procédure est lancée ?

    J'ai deux procédures : P1 qui va lancer P2. J'aimerais savoir quels sont les arguments de P2 lors de l'exécution :

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    CREATE OR ALTER PROCEDURE P1 (a1 int, a2 int, a3 int, a4)
    BEGIN
     
        ...select * from P2(a1, a2, x1, y1)
    END
     
    CREATE OR ALTER PROCEDURE P2 (a1 int, a2 int, x1 int, y1 int)
    BEGIN
     
    ...
    END

    Comment dois-je faire pour avoir le détails de "select * from P2(?,?,?,?) ?
    Actuellement, on écrit dans une table "log" les valeurs des arguments (a1, a2,...) et on consulte cette table après le lancement de la procédure P1. Cela s'avère fastidieux quand il y a beaucoup de sous-procédures et d'arguments.

    Est-ce qu'un outil permet d'afficher le détails de toutes les sous-procédures lancées ? (et j'en profite aussi... est-ce possible d'avoir les temps d'exécution).

    J'utilise Intellj, Dbeaver et FlameRobin. J'utilise aussi FB TraceManager 3. Avec Firebird 2.5

    Merci bien.

  2. #2
    Rédacteur/Modérateur

    Bonjour,
    Citation Envoyé par dranakan Voir le message

    Comment puis-je savoir quels sont les arguments définis quand une sous-procédure est lancée ?
    ...
    Est-ce qu'un outil permet d'afficher les détails de toutes les sous-procédures lancées ? (et j'en profite aussi... est-ce possible d'avoir les temps d'exécution).
    J'avoue être un peu dans le flou.
    La première idée qui m'est venue c'est : les tables système et celles de monitoring encore que, dépendant de la version (2.5 ou 3) il doit y avoir des différences
    La seconde, a été, cela me semble bien compliqué toutes ces sous-procedures ! Et l'objectif, pas très clair. Le fichier log semble être un bonne solution
    On consulte cette table après le lancement de la procédure P1. Cela s'avère fastidieux quand il y a beaucoup de sous-procédures et d'arguments.

    Si ces étapes s'avèrent fastidieuses c'est qu'il y a peut-être un problème dans la table de log (niveau structure)
    une table Temporaire est-elle envisageable ?
    La/Les procédures ne pourraient/renvoient-elles des résultats ?
    La seule chose absolue dans un monde comme le nôtre, c'est l'humour. » Albert Einstein

    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Tokyo, Rio, Sidney) et peut être quelques autres
    SGBD : Firebird 2.5, 3, SQLite
    générateurs Etats : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Ubuntu, Androïd

  3. #3
    Membre à l'essai
    Merci pour cette réponse ultra-rapide !

    Citation Envoyé par SergioMaster Voir le message

    J'avoue être un peu dans le flou.
    Dans la situation actuelle, on se retrouve des fois avec plus de 8 procédures imbriquées (sur une base comptant plusieurs centaines de procédures).
    Il arrive qu'on a un résultat non désiré dans la procédure de premier niveau, nous devons donc aller "chercher" dans chaque procédure pour identifier le problème. Cette recherche serait simplifiée si on avait un moyen simple de connaître chaque appel de chaque procédure afin de les lancer indépendamment.

    Pour des analyses de performances, il nous serait aussi utile d'avoir le temps d'exécution de chaque sous-procédure. Suite à mes tests avec FB TraceManager, on a le temps d'exécution (et les arguments) de la procédure principale, mais pas les sous-procédures.

    J'aimerais éviter de passer dans toutes nos procédures pour ajouter manuellement du code qui écrit chaque argument dans un log (tables, tables temporaires, ...).

    L'idéal serait de lancer la première procédure, d'attendre le résultat, et ensuite d'avoir le détails de fonctionnement .

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Procédure P1(1,2,3,4) : 500 ms
    	Procédure P2(5,6,7,8) : 300 ms
    		Procédure P3(4,5,6) : 300 ms
    	Procédure P4(1,2,3,4,5,6,7,8,9,1,2,3,4,5,6,7,8) : 200 ms


    Citation Envoyé par SergioMaster Voir le message

    La seconde, a été, cela me semble bien compliqué toutes ces sous-procédures
    Cela a été fait ainsi

###raw>template_hook.ano_emploi###