Précédent   Forum du club des développeurs et IT Pro > Bases de données > Firebird > SQL
SQL Forum d'entraide sur le SQL pour Firebird
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 04/11/2012, 11h56   #1
Just-Soft
Membre Expert
 
Homme AbdelHakim Kellouche
Inscription : mai 2008
Messages : 2 048
Détails du profil
Informations personnelles :
Nom : Homme AbdelHakim Kellouche
Localisation : Algérie

Informations professionnelles :
Secteur : Service public

Informations forums :
Inscription : mai 2008
Messages : 2 048
Points : 2 148
Points : 2 148
Envoyer un message via MSN à Just-Soft Envoyer un message via Skype™ à Just-Soft
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
Type de fichier : txt est-ce-possible.txt (5,2 Ko, 7 affichages)
__________________
Bon courage ou Bonne Chance (selon le contexte)
Just-Soft est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/11/2012, 13h11   #2
dehorter olivier
Membre Expert
 
Homme Olivier Dehorter
Ingenieur de recherche - Ecologue
Inscription : juin 2003
Messages : 917
Détails du profil
Informations personnelles :
Nom : Homme Olivier Dehorter
Localisation : France

Informations professionnelles :
Activité : Ingenieur de recherche - Ecologue

Informations forums :
Inscription : juin 2003
Messages : 917
Points : 1 240
Points : 1 240
il suffit d'executer les PS dans une autre PS:
Code :
1
2
3
4
 
SELECT Ma_PS.*
FROM Ma_PA(param1, ..)
INTO :xxxx
ou
Code :
EXECUTE PROCEDURE Ma_PS(param1, ...)
dehorter olivier est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/11/2012, 13h22   #3
Just-Soft
Membre Expert
 
Homme AbdelHakim Kellouche
Inscription : mai 2008
Messages : 2 048
Détails du profil
Informations personnelles :
Nom : Homme AbdelHakim Kellouche
Localisation : Algérie

Informations professionnelles :
Secteur : Service public

Informations forums :
Inscription : mai 2008
Messages : 2 048
Points : 2 148
Points : 2 148
Envoyer un message via MSN à Just-Soft Envoyer un message via Skype™ à Just-Soft
Pour une PS ça marche mais je voudrais faire quelque chose comme :
Code :
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)
Just-Soft est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/11/2012, 13h41   #4
dehorter olivier
Membre Expert
 
Homme Olivier Dehorter
Ingenieur de recherche - Ecologue
Inscription : juin 2003
Messages : 917
Détails du profil
Informations personnelles :
Nom : Homme Olivier Dehorter
Localisation : France

Informations professionnelles :
Activité : Ingenieur de recherche - Ecologue

Informations forums :
Inscription : juin 2003
Messages : 917
Points : 1 240
Points : 1 240
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
dehorter olivier est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/11/2012, 14h41   #5
Just-Soft
Membre Expert
 
Homme AbdelHakim Kellouche
Inscription : mai 2008
Messages : 2 048
Détails du profil
Informations personnelles :
Nom : Homme AbdelHakim Kellouche
Localisation : Algérie

Informations professionnelles :
Secteur : Service public

Informations forums :
Inscription : mai 2008
Messages : 2 048
Points : 2 148
Points : 2 148
Envoyer un message via MSN à Just-Soft Envoyer un message via Skype™ à Just-Soft
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 :
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)
Just-Soft est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/11/2012, 14h49   #6
dehorter olivier
Membre Expert
 
Homme Olivier Dehorter
Ingenieur de recherche - Ecologue
Inscription : juin 2003
Messages : 917
Détails du profil
Informations personnelles :
Nom : Homme Olivier Dehorter
Localisation : France

Informations professionnelles :
Activité : Ingenieur de recherche - Ecologue

Informations forums :
Inscription : juin 2003
Messages : 917
Points : 1 240
Points : 1 240
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" ?
dehorter olivier est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/11/2012, 09h20   #7
Just-Soft
Membre Expert
 
Homme AbdelHakim Kellouche
Inscription : mai 2008
Messages : 2 048
Détails du profil
Informations personnelles :
Nom : Homme AbdelHakim Kellouche
Localisation : Algérie

Informations professionnelles :
Secteur : Service public

Informations forums :
Inscription : mai 2008
Messages : 2 048
Points : 2 148
Points : 2 148
Envoyer un message via MSN à Just-Soft Envoyer un message via Skype™ à Just-Soft
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)
Just-Soft est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/11/2012, 09h30   #8
dehorter olivier
Membre Expert
 
Homme Olivier Dehorter
Ingenieur de recherche - Ecologue
Inscription : juin 2003
Messages : 917
Détails du profil
Informations personnelles :
Nom : Homme Olivier Dehorter
Localisation : France

Informations professionnelles :
Activité : Ingenieur de recherche - Ecologue

Informations forums :
Inscription : juin 2003
Messages : 917
Points : 1 240
Points : 1 240
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
dehorter olivier est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/11/2012, 11h18   #9
SergioMaster
Modérateur
 
Avatar de SergioMaster
 
Homme Serge Girard
Développeur informatique
Inscription : janvier 2007
Messages : 4 207
Détails du profil
Informations personnelles :
Nom : Homme Serge Girard
Âge : 56
Localisation : France

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

Informations forums :
Inscription : janvier 2007
Messages : 4 207
Points : 7 265
Points : 7 265
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 ?
__________________
La seule chose absolue dans un monde comme le nôtre, c'est l'humour. » Albert Einstein
J'entends et j'oublie. Je vois et je me souviens. Je fais et je comprends . Confucius
Si votre seul outil est un marteau, vous aurez tendance a ne voir que des clous
SergioMaster est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/11/2012, 12h15   #10
Just-Soft
Membre Expert
 
Homme AbdelHakim Kellouche
Inscription : mai 2008
Messages : 2 048
Détails du profil
Informations personnelles :
Nom : Homme AbdelHakim Kellouche
Localisation : Algérie

Informations professionnelles :
Secteur : Service public

Informations forums :
Inscription : mai 2008
Messages : 2 048
Points : 2 148
Points : 2 148
Envoyer un message via MSN à Just-Soft Envoyer un message via Skype™ à Just-Soft
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
Type de fichier : txt est-ce-possible.txt (3,3 Ko, 6 affichages)
__________________
Bon courage ou Bonne Chance (selon le contexte)
Just-Soft est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/11/2012, 12h26   #11
dehorter olivier
Membre Expert
 
Homme Olivier Dehorter
Ingenieur de recherche - Ecologue
Inscription : juin 2003
Messages : 917
Détails du profil
Informations personnelles :
Nom : Homme Olivier Dehorter
Localisation : France

Informations professionnelles :
Activité : Ingenieur de recherche - Ecologue

Informations forums :
Inscription : juin 2003
Messages : 917
Points : 1 240
Points : 1 240
Ce serait mieux d'avoir des noms de PS qui ne nécessite pas l'utilisation des guillemets !

Code :
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
dehorter olivier est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/11/2012, 12h34   #12
Just-Soft
Membre Expert
 
Homme AbdelHakim Kellouche
Inscription : mai 2008
Messages : 2 048
Détails du profil
Informations personnelles :
Nom : Homme AbdelHakim Kellouche
Localisation : Algérie

Informations professionnelles :
Secteur : Service public

Informations forums :
Inscription : mai 2008
Messages : 2 048
Points : 2 148
Points : 2 148
Envoyer un message via MSN à Just-Soft Envoyer un message via Skype™ à Just-Soft
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)
Just-Soft est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/11/2012, 12h47   #13
Just-Soft
Membre Expert
 
Homme AbdelHakim Kellouche
Inscription : mai 2008
Messages : 2 048
Détails du profil
Informations personnelles :
Nom : Homme AbdelHakim Kellouche
Localisation : Algérie

Informations professionnelles :
Secteur : Service public

Informations forums :
Inscription : mai 2008
Messages : 2 048
Points : 2 148
Points : 2 148
Envoyer un message via MSN à Just-Soft Envoyer un message via Skype™ à Just-Soft
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)
Just-Soft est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/11/2012, 14h50   #14
SergioMaster
Modérateur
 
Avatar de SergioMaster
 
Homme Serge Girard
Développeur informatique
Inscription : janvier 2007
Messages : 4 207
Détails du profil
Informations personnelles :
Nom : Homme Serge Girard
Âge : 56
Localisation : France

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

Informations forums :
Inscription : janvier 2007
Messages : 4 207
Points : 7 265
Points : 7 265
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 :
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 :
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à
__________________
La seule chose absolue dans un monde comme le nôtre, c'est l'humour. » Albert Einstein
J'entends et j'oublie. Je vois et je me souviens. Je fais et je comprends . Confucius
Si votre seul outil est un marteau, vous aurez tendance a ne voir que des clous
SergioMaster est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/11/2012, 10h06   #15
Just-Soft
Membre Expert
 
Homme AbdelHakim Kellouche
Inscription : mai 2008
Messages : 2 048
Détails du profil
Informations personnelles :
Nom : Homme AbdelHakim Kellouche
Localisation : Algérie

Informations professionnelles :
Secteur : Service public

Informations forums :
Inscription : mai 2008
Messages : 2 048
Points : 2 148
Points : 2 148
Envoyer un message via MSN à Just-Soft Envoyer un message via Skype™ à Just-Soft
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)
Just-Soft est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/11/2012, 13h21   #16
Just-Soft
Membre Expert
 
Homme AbdelHakim Kellouche
Inscription : mai 2008
Messages : 2 048
Détails du profil
Informations personnelles :
Nom : Homme AbdelHakim Kellouche
Localisation : Algérie

Informations professionnelles :
Secteur : Service public

Informations forums :
Inscription : mai 2008
Messages : 2 048
Points : 2 148
Points : 2 148
Envoyer un message via MSN à Just-Soft Envoyer un message via Skype™ à Just-Soft
Me revoilà

je viens d'intégrer trois procédures dans le procédure mère si je peux dire :
Code :
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
    Citation:
    "PERIODE DU 30/04/2012 AU 30/0920"
    alors que j'ai la date écrite à l'envers :
    Citation:
    "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 !!!!

Citation:
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)
Just-Soft est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/11/2012, 14h24   #17
SergioMaster
Modérateur
 
Avatar de SergioMaster
 
Homme Serge Girard
Développeur informatique
Inscription : janvier 2007
Messages : 4 207
Détails du profil
Informations personnelles :
Nom : Homme Serge Girard
Âge : 56
Localisation : France

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

Informations forums :
Inscription : janvier 2007
Messages : 4 207
Points : 7 265
Points : 7 265
Pour la ligne 19 , tout a fait normal c'est le type de sortie date par défaut .
Rien d'insurmontable :
Code :
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 :
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 :
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
__________________
La seule chose absolue dans un monde comme le nôtre, c'est l'humour. » Albert Einstein
J'entends et j'oublie. Je vois et je me souviens. Je fais et je comprends . Confucius
Si votre seul outil est un marteau, vous aurez tendance a ne voir que des clous
SergioMaster est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/11/2012, 15h15   #18
Just-Soft
Membre Expert
 
Homme AbdelHakim Kellouche
Inscription : mai 2008
Messages : 2 048
Détails du profil
Informations personnelles :
Nom : Homme AbdelHakim Kellouche
Localisation : Algérie

Informations professionnelles :
Secteur : Service public

Informations forums :
Inscription : mai 2008
Messages : 2 048
Points : 2 148
Points : 2 148
Envoyer un message via MSN à Just-Soft Envoyer un message via Skype™ à Just-Soft
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)
Just-Soft est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/11/2012, 15h28   #19
dehorter olivier
Membre Expert
 
Homme Olivier Dehorter
Ingenieur de recherche - Ecologue
Inscription : juin 2003
Messages : 917
Détails du profil
Informations personnelles :
Nom : Homme Olivier Dehorter
Localisation : France

Informations professionnelles :
Activité : Ingenieur de recherche - Ecologue

Informations forums :
Inscription : juin 2003
Messages : 917
Points : 1 240
Points : 1 240
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 :
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 :
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, '');
dehorter olivier est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/11/2012, 16h56   #20
Just-Soft
Membre Expert
 
Homme AbdelHakim Kellouche
Inscription : mai 2008
Messages : 2 048
Détails du profil
Informations personnelles :
Nom : Homme AbdelHakim Kellouche
Localisation : Algérie

Informations professionnelles :
Secteur : Service public

Informations forums :
Inscription : mai 2008
Messages : 2 048
Points : 2 148
Points : 2 148
Envoyer un message via MSN à Just-Soft Envoyer un message via Skype™ à Just-Soft
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)
Just-Soft est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Cette discussion est résolue.
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 01h55.


 
 
 
 
Partenaires

Hébergement Web