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

"N" procédures stockées exécutées dans un seul code


Sujet :

SQL Firebird

  1. #1
    Membre émérite
    Homme Profil pro
    Directeur technique
    Inscrit en
    Mai 2008
    Messages
    2 401
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2008
    Messages : 2 401
    Points : 2 304
    Points
    2 304
    Par défaut "N" procédures stockées exécutées dans un seul code
    Salut !

    j'ai réalisé 5 procédures stockées que je veux exécuter en un seul morceau sous forme de "block firebird" ou de "PS" mais je ne sais pas comment m'y prendre .

    A toute fin utile, voici en pièce jointe les 5 PS dans un fichier texte. Je suis ouvert à toute proposition, idée, article ou autre pouvant m'aider dans ce sens.

    Merci par avance.
    Fichiers attachés Fichiers attachés
    Bon courage ou Bonne Chance (selon le contexte)
    Mon blog sur WordPress

  2. #2
    Membre expérimenté
    Homme Profil pro
    Ingenieur de recherche - Ecologue
    Inscrit en
    Juin 2003
    Messages
    1 146
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingenieur de recherche - Ecologue

    Informations forums :
    Inscription : Juin 2003
    Messages : 1 146
    Points : 1 412
    Points
    1 412
    Par défaut
    il suffit d'executer les PS dans une autre PS:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    SELECT Ma_PS.*
    FROM Ma_PA(param1, ..)
    INTO :xxxx
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    EXECUTE PROCEDURE Ma_PS(param1, ...)
    Merci d'ajouter un sur les tags qui vous ont aidé

  3. #3
    Membre émérite
    Homme Profil pro
    Directeur technique
    Inscrit en
    Mai 2008
    Messages
    2 401
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2008
    Messages : 2 401
    Points : 2 304
    Points
    2 304
    Par défaut
    Pour une PS ça marche mais je voudrais faire quelque chose comme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    EXECUTE PROCEDURE Ma_PS1(param1, ...)
    EXECUTE PROCEDURE Ma_PS2(param1, ...)
    EXECUTE PROCEDURE Ma_PSn(param1, ...)
    mais ça marche pas de cette façon
    Bon courage ou Bonne Chance (selon le contexte)
    Mon blog sur WordPress

  4. #4
    Membre expérimenté
    Homme Profil pro
    Ingenieur de recherche - Ecologue
    Inscrit en
    Juin 2003
    Messages
    1 146
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingenieur de recherche - Ecologue

    Informations forums :
    Inscription : Juin 2003
    Messages : 1 146
    Points : 1 412
    Points
    1 412
    Par défaut
    Si ça marche; je le fais.

    Attention de EXECUTE PROCEDURE fonctionne pour les PS qui ne renvoient pas de valeur (pas de RETURN) ET elle ne renvoie rien, sinon utilisez le classique SELECT
    Merci d'ajouter un sur les tags qui vous ont aidé

  5. #5
    Membre émérite
    Homme Profil pro
    Directeur technique
    Inscrit en
    Mai 2008
    Messages
    2 401
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2008
    Messages : 2 401
    Points : 2 304
    Points
    2 304
    Par défaut
    je crois que vous m'avez pas compris !
    c'est pas une question EXECUTE PROCEDURE ou de SELECT mais d'exécutions successives de plusieurs PS dans le même source.

    Je voudrais faire ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    select * from "[10]PS_INDICE_BOUE"('30.09.2012','30.09.2012','c',3);
    select * from "[10]PS_RATIO_DCO_DBO5"('30.09.2012','30.09.2012');
    mais ça passe pas !!! comment contourner ce problème ?
    Bon courage ou Bonne Chance (selon le contexte)
    Mon blog sur WordPress

  6. #6
    Membre expérimenté
    Homme Profil pro
    Ingenieur de recherche - Ecologue
    Inscrit en
    Juin 2003
    Messages
    1 146
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingenieur de recherche - Ecologue

    Informations forums :
    Inscription : Juin 2003
    Messages : 1 146
    Points : 1 412
    Points
    1 412
    Par défaut
    Si, Si

    Je le fais dans mes PS !

    Là les 2 Select ne marchent pas, il manque le INTO ....

    la même source est bien une PS ?


    pourquoi ne pas mettre le code de cette "même source" ?
    Merci d'ajouter un sur les tags qui vous ont aidé

  7. #7
    Membre émérite
    Homme Profil pro
    Directeur technique
    Inscrit en
    Mai 2008
    Messages
    2 401
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2008
    Messages : 2 401
    Points : 2 304
    Points
    2 304
    Par défaut
    Salut et merci
    à mon avis je ne suis pas trop explicite ce qui m'amène à tourner en rond

    récapitulatif : j'ai plusieurs PS qui fonctionnent très très bien à l'exécution mais là je voudrais les exécuter une par une dans un même et seul code sauf que j'arrive pas à le faire.

    si quelqu'un a déjà fait ça qu'il m’aiguille et merci par avance.
    Bon courage ou Bonne Chance (selon le contexte)
    Mon blog sur WordPress

  8. #8
    Membre expérimenté
    Homme Profil pro
    Ingenieur de recherche - Ecologue
    Inscrit en
    Juin 2003
    Messages
    1 146
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingenieur de recherche - Ecologue

    Informations forums :
    Inscription : Juin 2003
    Messages : 1 146
    Points : 1 412
    Points
    1 412
    Par défaut
    Citation Envoyé par Just-Soft Voir le message
    Salut et merci
    à mon avis je ne suis pas trop explicite ce qui m'amène à tourner en rond

    récapitulatif : j'ai plusieurs PS qui fonctionnent très très bien à l'exécution mais là je voudrais les exécuter une par une dans un même et seul code sauf que j'arrive pas à le faire.

    si quelqu'un a déjà fait ça qu'il m’aiguille et merci par avance.
    J'ai déjà répondu, CA MARCHE.
    Pourquoi ne pas mettre votre code de manière plus explicite; cela faciliterait les choses
    Merci d'ajouter un sur les tags qui vous ont aidé

  9. #9
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 031
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 031
    Points : 40 930
    Points
    40 930
    Billets dans le blog
    62
    Par défaut
    je confirme ce que dit Olivier cela fonctionne à partir du moment où il y a des INTO .

    dans votre fichier joint (a noter que je trouve ça extrêmement désagréable d'avoir a télécharger un fichier pour un bout de code) je ne voit aucunes procédures mais des SELECT , sans INTO et sans SUSPEND j'ai donc du mal a comprendre le problème exact

    ma déduction est que je vois un dialogue de sourds a moins que je sois aveugle ?
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  10. #10
    Membre émérite
    Homme Profil pro
    Directeur technique
    Inscrit en
    Mai 2008
    Messages
    2 401
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2008
    Messages : 2 401
    Points : 2 304
    Points
    2 304
    Par défaut
    Re,

    je sais que je suis déplaisant cette matinée mais
    Serge ! t'es devenu méchant et impatient contrairement à tes bonnes habitudes

    ok, voici en pièce jointe un fichier texte dont j'ai mis 2 procédures parmi un tas d'autres qui traite du même sujet (exploitation d'une station d'épuration à boue activée). Mon but est de pouvoir lancer toutes les procédures dans un seul et même code source pour avoir comme résultat un fichier texte avec le résultat de chacune des PS et les erreurs d'exécution au cas où une PS échoua sans pour autant que l'exécution ne s'arrête sur une erreur précise mais doit être capable de finir le traitement et me renseigner en final.

    Ceci étant l'objectif principal de ce poste, espérant que cette fois-ci je suis clair et pardon pour le désagrément que j'ai causé dans mes précédents postes.
    Fichiers attachés Fichiers attachés
    Bon courage ou Bonne Chance (selon le contexte)
    Mon blog sur WordPress

  11. #11
    Membre expérimenté
    Homme Profil pro
    Ingenieur de recherche - Ecologue
    Inscrit en
    Juin 2003
    Messages
    1 146
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingenieur de recherche - Ecologue

    Informations forums :
    Inscription : Juin 2003
    Messages : 1 146
    Points : 1 412
    Points
    1 412
    Par défaut
    Ce serait mieux d'avoir des noms de PS qui ne nécessite pas l'utilisation des guillemets !

    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
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    CREATE PROCEDURE Mixte (
        date_debut date,
        date_fin date,
        step varchar(20),
        code_point_prlv smallint)
    returns (
        nom_step varchar(20) character set unicode_fss,
        ouvrage varchar(30) character set unicode_fss,
        date_bilan date,
        ib integer,
        interpretation_ib varchar(300) character set unicode_fss,
        effluent varchar(35),
        ratio_dco_dbo5 float)
    as
    begin
       FOR 
           SELECT nom_step 
                  FROM "[10]PS_INDICE_BOUE"(:date_debut,    :date_fin,    :step,    :code_point_prlv)
           INTO : nom_step 
        DO 
           SUSPEND;
     
          FOR 
           SELECT nom_step 
                  FROM "[10]PS_RATIO_DCO_DBO5"(:date_debut,    :date_fin)
           INTO : nom_step 
        DO 
           SUSPEND;
     
    end
    Merci d'ajouter un sur les tags qui vous ont aidé

  12. #12
    Membre émérite
    Homme Profil pro
    Directeur technique
    Inscrit en
    Mai 2008
    Messages
    2 401
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2008
    Messages : 2 401
    Points : 2 304
    Points
    2 304
    Par défaut
    merci dehorter olivier, je viens de comprendre l'idée 'enfin ', je vais mettre tout ça en œuvre et vous faire part de l'avancement, merci encore.
    Bon courage ou Bonne Chance (selon le contexte)
    Mon blog sur WordPress

  13. #13
    Membre émérite
    Homme Profil pro
    Directeur technique
    Inscrit en
    Mai 2008
    Messages
    2 401
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2008
    Messages : 2 401
    Points : 2 304
    Points
    2 304
    Par défaut
    Je viens de faire les premiers tests mais c'est pas tout à fait ce que je veux car là à la sortie j'ai les champs des deux procédures dans une seule liste avec plein de données redondantes et de valeurs nuls ce qui me parait logique puisque c'est un "union" qu'il a fait Monsieur SQL.

    Par contre, je voudrais si possible, avoir le résultat dans un fichier texte avec comme rubrique le nom de la procédure exécutée et ses résultats ou l'erreur affrontée ....

    est-ce possible ?!
    Bon courage ou Bonne Chance (selon le contexte)
    Mon blog sur WordPress

  14. #14
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 031
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 031
    Points : 40 930
    Points
    40 930
    Billets dans le blog
    62
    Par défaut
    je comprends enfin mieux le problème (bien qu'être obligé charger le fichier joint au lieu de lire code directement dans le Post me hérisse toujours le poil )

    quel serait exactement la sortie voulue ?

    s'il s'agit simplement de texte je ferais plutôt de la manière suivante
    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
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
     
    CREATE PROCEDURE Mixte (
        date_debut date,
        date_fin date,
        step varchar(20),
        code_point_prlv smallint)
    returns ( Ligne VARCHAR(500) character SET unicode_fss)
    AS
    DECLARE VARIABLE nom_step varchar(20) character SET unicode_fss;
    DECLARE VARIABLE  ouvrage varchar(30) character SET unicode_fss;
    DECLARE VARIABLE  date_bilan date;
    DECLARE VARIABLE  ib integer;
    DECLARE VARIABLE  interpretation_ib varchar(300) character SET unicode_fss;
    DECLARE VARIABLE  effluent varchar(35);
    DECLARE VARIABLE  ratio_dco_dbo5 float;
    BEGIN
       LIGNE='PROCEDURE 1';
       SUSPEND;
       FOR 
           SELECT nom_step 
                  FROM "[10]PS_INDICE_BOUE"(:date_debut,    :date_fin,    :step,    :code_point_prlv)
           INTO :nom_step,:OUVRAGE,:IB,:Interpretation_ib
        DO  BEGIN
           LIGNE= nom_Step||','||Interpretation_ib;  
           SUSPEND;
       END
       LIGNE='PROCEDURE 2';
       SUSPEND;
       FOR 
           SELECT nom_step 
                  FROM "[10]PS_RATIO_DCO_DBO5"(:date_debut,    :date_fin)
           INTO : nom_step,:Effluent,ratio_dco_dbo5 
        DO  BEGIN
           LIGNE=nom_step||','||effluent;
           SUSPEND;
       END
     END^
    ou encore
    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
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
     
    CREATE PROCEDURE Mixte (
        date_debut date,
        date_fin date,
        step varchar(20),
        code_point_prlv smallint)
    returns ( Step varchar(20) character SET unicode_fss,
                 Ligne VARCHAR(500) character SET unicode_fss)
    AS 
    DECLARE VARIABLE  ouvrage varchar(30) character SET unicode_fss;
    DECLARE VARIABLE  date_bilan date;
    DECLARE VARIABLE  ib integer;
    DECLARE VARIABLE  interpretation_ib varchar(300) character SET unicode_fss;
    DECLARE VARIABLE  effluent varchar(35);
    DECLARE VARIABLE  ratio_dco_dbo5 float;
    BEGIN
       STEP='PROCEDURE 1';
       LIGNE='';
       SUSPEND;
       FOR 
           SELECT * 
                  FROM "[10]PS_INDICE_BOUE"(:date_debut,    :date_fin,    :step,    :code_point_prlv)
           INTO :Step,:OUVRAGE,:IB,:Interpretation_ib
        DO  BEGIN
           LIGNE=:OUVRAGE||'  '||:Interpretation_ib;  
           SUSPEND;
       END
       -- Entree proc 2 
       Step='PROCEDURE 2';
       Ligne='';
       SUSPEND;
       FOR 
           SELECT * 
                  FROM "[10]PS_RATIO_DCO_DBO5"(:date_debut,    :date_fin)
           INTO :Step,:Effluent,:ratio_dco_dbo5 
        DO  BEGIN
           LIGNE=:effluent||' ratio : '||:ratio_dco_dbo5 ;
           SUSPEND;
       END
     END^
    il manque peut être quelques ':' par-ci par là
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  15. #15
    Membre émérite
    Homme Profil pro
    Directeur technique
    Inscrit en
    Mai 2008
    Messages
    2 401
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2008
    Messages : 2 401
    Points : 2 304
    Points
    2 304
    Par défaut
    Salut !

    merci Maitre Serge ... ton code est sexy j'avais jamais pensé à cette simple et efficace utilisation.

    Affaire à suivre car j'ai 2 ou 3 petites choses avant de clôturer ce poste, je vous tiendrais au courant.
    Bon courage ou Bonne Chance (selon le contexte)
    Mon blog sur WordPress

  16. #16
    Membre émérite
    Homme Profil pro
    Directeur technique
    Inscrit en
    Mai 2008
    Messages
    2 401
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2008
    Messages : 2 401
    Points : 2 304
    Points
    2 304
    Par défaut
    Me revoilà

    je viens d'intégrer trois procédures dans le procédure mère si je peux dire :
    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
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    CREATE PROCEDURE EXECUTE_TOUT (
        date_debut date,
        date_fin date,
        step varchar(30),
        code_point_prlv smallint)
    returns (
        ligne varchar(500) character set unicode_fss)
    as
    declare variable nom_step varchar(20);
    declare variable ib integer;
    declare variable nbr_ib integer;
    declare variable nbr_ integer;
    declare variable dco_dbo5 float;
    declare variable interpretation_ib varchar(100);
    declare variable effluent varchar(100);
    declare variable ratio_boue float;
    declare variable extration varchar(50);
    BEGIN
       LIGNE = 'PERIODE DU : ' || date_debut || ' AU : ' || date_fin;
       SUSPEND;
       LIGNE = '';
       SUSPEND;
     
       /******* Indice de boue ***************/
       LIGNE = 'CALCUL DE L''INDICE_BOUE';
       suspend;
       FOR 
           SELECT  nom_step,
                   avg(ib),
                   count(ib),
                   interpretation_ib
           FROM "[10]PS_INDICE_BOUE"(:date_debut, :date_fin, :step, :code_point_prlv)
     
           group by nom_step, interpretation_ib
     
           INTO :nom_step,
                :IB,
                :nbr_ib,
                :Interpretation_ib
     
       DO BEGIN
                LIGNE = 'STEP : ' || nom_Step || ' -- ' ||
                        'Val. IB : ' || IB || ' -- ' ||
                        'Fréq. IB : ' || nbr_ib || ' -- ' ||
                        'Interp. : ' || Interpretation_ib;
          SUSPEND;
       END
     
       LIGNE = '';
       SUSPEND;
       /******* Ratio DCO / DBO5 ***************/
       LIGNE = 'CALCUL DU RATIO DCO / DBO5';
       SUSPEND;
       FOR 
           SELECT  nom_step,
                   count(ratio_dco_dbo5),
                   avg(ratio_dco_dbo5),
                   effluent
     
           FROM "[10]PS_RATIO_DCO_DBO5"(:date_debut, :date_fin)
     
           group by nom_step, effluent
     
           INTO :nom_step,
                :nbr_,
                :dco_dbo5,
                :effluent
     
       DO BEGIN
                LIGNE = 'STEP :  ' || nom_Step || ' -- ' ||
                        'Fréq. Rx : ' || nbr_ || ' -- ' ||
                        'Val. Rx DCO/DBO5 : ' || cast(dco_dbo5 as decimal(15,2)) || ' -- ' ||
                        'Nat. : ' || effluent ;
          SUSPEND;
       END
     
       LIGNE = '';
       SUSPEND;
       /******* Production de boue ***************/
       LIGNE = 'PRODUCION DE BOUE';
       SUSPEND;
       FOR
           SELECT  nom_step,
                   avg(ratio_boue),
                   consigne_boue
     
           FROM "[10]_PS_RATIO_BOUE"(:date_debut, :date_fin)
     
           group by nom_step, consigne_boue
     
           INTO :nom_step,
                :ratio_boue,
                :extration
     
       DO BEGIN
                LIGNE = 'STEP : ' || nom_Step || ' -- ' ||
                        'Fréq. Rx Boue : ' || nbr_ || ' -- ' ||
                        'Val. Rx Boue  : ' || cast(ratio_boue as decimal(15,2)) || ' -- ' ||
                        'Extraction : ' || extration ;
          SUSPEND;
       END
    END

    à la sortie j'ai quelques petits problèmes que j'arrive pas à résoudre :

    1. sur la 1ère ligne je dois avoir
      "PERIODE DU 30/04/2012 AU 30/0920"
      alors que j'ai la date écrite à l'envers :
      "PERIODE DU 2012/04/30 AU 2012/09/30"
    2. j'ai des lignes insérées avec comme valeur <null> mais quand j'exécute chacune des procédure à part j'ai pas cette valeur nulle !!!!


    PERIODE DU : 2011-04-30 AU : 2012-09-30

    CALCUL DE L'INDICE_BOUE
    STEP : AIN DEFLA -- Val. IB : 128 -- Fréq. IB : 12 -- Interp. : Condition acceptables de décantation des boues
    STEP : AIN DEFLA -- Val. IB : 185 -- Fréq. IB : 18 -- Interp. : Difficultés de décantation liées Ã* un foisonement de bactéries filamenteuses "bulking"
    STEP : AIN DEFLA -- Val. IB : 53 -- Fréq. IB : 1 -- Interp. : Hors gamme
    STEP : AIN DEFLA -- Val. IB : 46 -- Fréq. IB : 1 -- Interp. : Mauvaise décantation des boues, les flocs ne sont pas assez concentrés
    STEP : CHLEF -- Val. IB : 124 -- Fréq. IB : 19 -- Interp. : Condition acceptables de décantation des boues
    STEP : CHLEF -- Val. IB : 156 -- Fréq. IB : 1 -- Interp. : Difficultés de décantation liées Ã* un foisonement de bactéries filamenteuses "bulking"
    STEP : CHLEF -- Val. IB : 60 -- Fréq. IB : 11 -- Interp. : Hors gamme
    STEP : CHLEF -- Val. IB : 92 -- Fréq. IB : 4 -- Interp. : Les boues sont bien minéralisées et sédimentent facilement
    STEP : CHLEF -- Val. IB : 46 -- Fréq. IB : 1 -- Interp. : Mauvaise décantation des boues, les flocs ne sont pas assez concentrés

    CALCUL DU RATIO DCO / DBO5
    <null>
    STEP : AIN DEFLA -- Fréq. Rx : 3 -- Val. Rx DCO/DBO5 : 2.44 -- Nat. : Effluent Domestique
    STEP : AIN DEFLA -- Fréq. Rx : 5 -- Val. Rx DCO/DBO5 : 1.71 -- Nat. : Effluent Industrie Agro-alimentaire
    STEP : AIN DEFLA -- Fréq. Rx : 8 -- Val. Rx DCO/DBO5 : 1.18 -- Nat. : Hors Gamme
    <null>
    STEP : AMMI MOUSSA -- Fréq. Rx : 2 -- Val. Rx DCO/DBO5 : 2.37 -- Nat. : Effluent Domestique
    STEP : AMMI MOUSSA -- Fréq. Rx : 2 -- Val. Rx DCO/DBO5 : 1.80 -- Nat. : Effluent Industrie Agro-alimentaire
    STEP : AMMI MOUSSA -- Fréq. Rx : 2 -- Val. Rx DCO/DBO5 : 4.88 -- Nat. : Effluent Industriel
    STEP : AMMI MOUSSA -- Fréq. Rx : 2 -- Val. Rx DCO/DBO5 : 0.86 -- Nat. : Hors Gamme
    <null>
    STEP : CHLEF -- Fréq. Rx : 7 -- Val. Rx DCO/DBO5 : 2.31 -- Nat. : Effluent Domestique
    STEP : CHLEF -- Fréq. Rx : 9 -- Val. Rx DCO/DBO5 : 1.89 -- Nat. : Effluent Industrie Agro-alimentaire

    PRODUCION DE BOUE
    <null>
    STEP : AIN DEFLA -- Fréq. Rx Boue : 9 -- Val. Rx Boue : 0.33 -- Extraction : Sous extraction
    STEP : AIN DEFLA -- Fréq. Rx Boue : 9 -- Val. Rx Boue : 1.14 -- Extraction : Sur extraction
    <null>
    <null>
    STEP : CHLEF -- Fréq. Rx Boue : 9 -- Val. Rx Boue : 0.94 -- Extraction : Sous extraction
    STEP : CHLEF -- Fréq. Rx Boue : 9 -- Val. Rx Boue : 1.92 -- Extraction : Sur extraction
    sinon pour le reste tout me semble bon
    Bon courage ou Bonne Chance (selon le contexte)
    Mon blog sur WordPress

  17. #17
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 031
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 031
    Points : 40 930
    Points
    40 930
    Billets dans le blog
    62
    Par défaut
    Pour la ligne 19 , tout a fait normal c'est le type de sortie date par défaut .
    Rien d'insurmontable :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
       LIGNE = 'PERIODE DU : ' ||Extract(DAY FROM  date_debut)||'/'||Extract(MONTH FROM  date_debut)||'/'||Extract(YEAR FROM  date_debut)|| ' AU : ' || Extract(DAY FROM  date_fin)||'/'||Extract(MONTH FROM  date_fin)||'/'||Extract(YEAR FROM  date_fin);
    Pour les lignes a Null , c'est certainement qu'une des données est à NULL justement . Suggestion de lecture le traitement des Valeurs NULL ici
    Contournement , l'utilisation de COALESCE , par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
          SELECT  nom_step,
                   avg(ib),
                   count(ib),
                   COALESCE(interpretation_ib,' ') -- si NULL alors un espace
           FROM "[10]PS_INDICE_BOUE"(:date_debut, :date_fin, :step, :code_point_prlv)
     
           GROUP BY nom_step, interpretation_ib
     
           INTO :nom_step,
                :IB,
                :nbr_ib,
                :Interpretation_ib
    ou d'une clause where supplémentaire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
          SELECT  nom_step,
                   avg(ib),
                   count(ib),
                   interpretation_ib 
           FROM "[10]PS_INDICE_BOUE"(:date_debut, :date_fin, :step, :code_point_prlv)
           WHERE interpretation_ib is not null 
           GROUP BY nom_step, interpretation_ib
     
           INTO :nom_step,
                :IB,
                :nbr_ib,
                :Interpretation_ib
    PS . Enfin je n'ai pas a télécharger la pièce jointe
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  18. #18
    Membre émérite
    Homme Profil pro
    Directeur technique
    Inscrit en
    Mai 2008
    Messages
    2 401
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2008
    Messages : 2 401
    Points : 2 304
    Points
    2 304
    Par défaut
    Re,
    merci pour le truc sur la date Serge.
    Par contre et pour les lignes avec des nulls, ça persiste malgré que j'ai pas ces lignes vides au niveau des PS initiales !!!
    Bon courage ou Bonne Chance (selon le contexte)
    Mon blog sur WordPress

  19. #19
    Membre expérimenté
    Homme Profil pro
    Ingenieur de recherche - Ecologue
    Inscrit en
    Juin 2003
    Messages
    1 146
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingenieur de recherche - Ecologue

    Informations forums :
    Inscription : Juin 2003
    Messages : 1 146
    Points : 1 412
    Points
    1 412
    Par défaut
    Alors essayes de neutraliser dans la PS mère chaque requête une à la fois, et ajoute une colonne bidon qui renvoi une constante pour tester la sortie.



    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
    21
    22
    23
       FOR 
           SELECT 1,
                   nom_step,
                   avg(ib),
                   count(ib),
                   interpretation_ib
           FROM "[10]PS_INDICE_BOUE"(:date_debut, :date_fin, :step, :code_point_prlv)
     
           GROUP BY nom_step, interpretation_ib
     
           INTO :Bidon,
                :nom_step,
                :IB,
                :nbr_ib,
                :Interpretation_ib
     
       DO BEGIN
                LIGNE = 'STEP : ' || nom_Step || ' -- ' ||
                        'Val. IB : ' || IB || ' -- ' ||
                        'Fréq. IB : ' || nbr_ib || ' -- ' ||
                        'Interp. : ' || Interpretation_ib;
          SUSPEND;
       END
    Ne pas oublier de déclarer la variable 'Bidon' en RETURNS


    Ca sent une valeur NULL pour un des éléments (et non toute la ligne). En effet si une des variables contient un NULL toute la collation devient NULL

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    LIGNE = 'STEP : ' || COALESCE(nom_Step, '') || ' -- ' ||
                        'Val. IB : ' || COALESCE(IB, -1) || ' -- ' ||
                        'Fréq. IB : ' || COALESCE(nbr_ib, -1) || ' -- ' ||
                        'Interp. : ' || COALESCE(Interpretation_ib, '');
    Merci d'ajouter un sur les tags qui vous ont aidé

  20. #20
    Membre émérite
    Homme Profil pro
    Directeur technique
    Inscrit en
    Mai 2008
    Messages
    2 401
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2008
    Messages : 2 401
    Points : 2 304
    Points
    2 304
    Par défaut
    Re,
    merci à vous deux, c'est vraiment génial, votre aide m'a aidé d'une grande utilité.

    je reviendrais après MAJ du source
    Bon courage ou Bonne Chance (selon le contexte)
    Mon blog sur WordPress

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 3 123 DernièreDernière

Discussions similaires

  1. Réponses: 7
    Dernier message: 15/09/2016, 08h50
  2. Procédure stockée, concaténation dans requête
    Par sbeu dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 01/08/2005, 12h03
  3. procédure stockée Oracle dans delphi 6
    Par UPNE387 dans le forum Bases de données
    Réponses: 3
    Dernier message: 04/05/2004, 09h47

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