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 :

Pbm avec Stored Proc.


Sujet :

SQL Firebird

  1. #1
    Membre actif
    Inscrit en
    Décembre 2004
    Messages
    390
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 390
    Points : 288
    Points
    288
    Par défaut Pbm avec Stored Proc.
    Bonsoir,

    Je suis novice en FB. J'ai le problème suivant :

    J'ai écris uns procédure stockée qui tourne bien quand je la lance la 1ère fois. Cependant, dés que je l'exécute les fois suivantes j'ai un message d'erreur m'indiquant que les paramètres de cette procédure sont manquants !

    Voici le code D5, XP, FB Embeded 1.5:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    procedure TfrmFact.GetCA
    var
      totCA : Currency;
    begin
      mySP_CA.ParamByName('MYCLIENT').AsString := edClient.Text;
      mySP_CA.ParamByName('MYDATE').AsDateTime := edDate.Date;
      mySP_CA.StoredProcName := 'GETCA';
      mySP_CA.ExecProc;
      totCA := mySP_CA.ParamByName('MYCA').asCurrency;
      mySP_CA.Close;
    end;
    Merci à vous.

  2. #2
    Expert éminent
    Avatar de qi130
    Homme Profil pro
    Expert Processus IT
    Inscrit en
    Mars 2003
    Messages
    3 901
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Expert Processus IT
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2003
    Messages : 3 901
    Points : 6 026
    Points
    6 026
    Par défaut
    Que cherches-tu à faire avec ce code ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    totCA := mySP_CA.ParamByName('MYCA').asCurrency;
    et quel est le code de la procédure ?
    "Il n'y a pas de bonnes réponses à une mauvaise question." (M. Godet)
    -----------------------
    Pensez à cloturer votre sujet - Aucune réponse aux sollicitations techniques par MP
    Usus magister est optimus

  3. #3
    Membre actif
    Inscrit en
    Décembre 2004
    Messages
    390
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 390
    Points : 288
    Points
    288
    Par défaut
    Au fait, je récupère le Chiffre d'affaire d'un client à une date donnée.
    Et voici le code de la SP.

    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
     
    SET TERM ^ ;
     
    CREATE PROCEDURE GETCA (
        myclient char(4),
        mydate date)
    returns (
        myca decimal(15,2))
    as
    begin
       SELECT SUM(MTHT + MTTVA + MTTMB)
       FROM FENT
       WHERE CLIENT=:MyClient AND DFACT<=:mydate
       into myCA;
      suspend;
    end^
     
    SET TERM ; ^
    Et merci.

  4. #4
    Expert éminent
    Avatar de qi130
    Homme Profil pro
    Expert Processus IT
    Inscrit en
    Mars 2003
    Messages
    3 901
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Expert Processus IT
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2003
    Messages : 3 901
    Points : 6 026
    Points
    6 026
    Par défaut
    As-tu essayé avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    totCA := mySP_CA.FieldByName('MYCA').asCurrency;
    ou encore
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    totCA := mySP_CA.Field[0].value;
    "Il n'y a pas de bonnes réponses à une mauvaise question." (M. Godet)
    -----------------------
    Pensez à cloturer votre sujet - Aucune réponse aux sollicitations techniques par MP
    Usus magister est optimus

  5. #5
    Membre actif
    Inscrit en
    Décembre 2004
    Messages
    390
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 390
    Points : 288
    Points
    288
    Par défaut
    Salut,

    En fait le problème ne réside pas à ce niveau ! Il se trouve que quant j'exécute les fois suivantes la procédure stockée, elle ne réponds pas. J'ai un message d'informant que je n'ai pas fourni les paramètres requis !

    D5, ZEOS, XP.

    J'ai résolu le pépin en utilisant un TZQuery mais je souhaiterais comprendre le pourquoi de la chose !

    Merci quand même.

  6. #6
    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 moi c'est le execproc qui est incorrect , il faut plutot faire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SELECT * FROM GETCA
    comme s'il s'agissait d'une table renvoyant un ensemble d'enregistrement (SUSPEND ) .
    ceci dit puisque la procedure ne semble pas envoyé plus d'un enregistrement c'est inutile , tout comme le SUSPEND (si encore il y avait un group by ) .
    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

  7. #7
    Membre actif
    Inscrit en
    Décembre 2004
    Messages
    390
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 390
    Points : 288
    Points
    288
    Par défaut
    Bonsoir,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SELECT * FROM GETCA
    Cette synthaxe fonctionne avec un TZQuery et non avec un TZStoredProc. !
    Ce dernier a besoin, comme arguments, le nom de la SP et les paramètres d'entrées et de sorties.

    Tous ces params étant fournis :
    - 1ére exécution tout baigne !
    - 2éme exécution, Message : Valeurs des paramètres en entrées absents !
    Idem pour les 3éme, 4éme ... fois.

    Bon !

    PS : Il sert à quoi les SUSPEND ???

    Merci.

  8. #8
    Membre confirmé Avatar de TryExceptEnd
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2006
    Messages
    501
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2006
    Messages : 501
    Points : 574
    Points
    574
    Par défaut
    Et si le probleme venait du composant (TZStoredProc) que tu utilise ?
    Si vous êtes libre, choisissez le Logiciel Libre.

  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
    Citation Envoyé par akli_agha Voir le message
    Cette synthaxe fonctionne avec un TZQuery et non avec un TZStoredProc. !
    Ce dernier a besoin, comme arguments, le nom de la SP et les paramètres d'entrées et de sorties.
    Je ne connais pas ces composants TZ.... (Zeos ?) donc j'aurais tendance à rejoindre TryExceptEnd

    Citation Envoyé par akli_agha Voir le message
    PS : Il sert à quoi les SUSPEND ???
    Dans le cas de ta procedure strictement à rien c'est d'ailleurs peut-etre la le probléme . pour simplifié je dirait que SUSPEND sert lorsque la procédure renvoi un ensemble de données . pour reprendre ton cas

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    CREATE PROCEDURE GETCA (
         mydate date)
    returns (
        myClient char(4),
        myca decimal(15,2))
    AS
    begin
       SELECT CLIENT,SUM(MTHT + MTTVA + MTTMB)
       FROM FENT
       WHERE DFACT<=:mydate
       GROUP BY CLIENT
       INTO myClient,myCA;
      suspend;
    end^
    retournerais tous les clients avec leur CA

    PS . Non testé
    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 actif
    Inscrit en
    Décembre 2004
    Messages
    390
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 390
    Points : 288
    Points
    288
    Par défaut
    Bonsoir,

    Merci les gars !

    Je pense, aussi, que ca vient du composant Zeos ! De toute facon j'ai contourné cet aléa avec un Query qui fonctionne correctement. Je fouinerai un plus dans le composant dés que j'ai un peu de temps.

    Pour Sergio... concernant SUSPEND.
    Dans la procédure 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
     
    CREATE PROCEDURE GETCA (
         mydate date)
    returns (
        myClient char(4),
        myca decimal(15,2))
    AS
    begin
       SELECT CLIENT, SUM(MTHT + MTTVA + MTTMB)
       FROM FENT
       WHERE DFACT<=:mydate
       GROUP BY CLIENT
       INTO myClient,myCA;
       SUSPEND;
    end^
    Si SUSPEND est omis, que se passera t-il ?

    Merci.

  11. #11
    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
    Autant pour moi
    j'ai pris la peine de tester cette procédure le SUSPEND est bien nécessaire
    par contre pour obtenir un resultat il faut bien faire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * FROM GETCA(ladate)
    pour obtenir un ensemble de résultats

    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
     
    // nota j''ai un peu changer les noms pour faire le test
    ALTER PROCEDURE GETCA (
        MYDATE Integer )
    RETURNS (
        MYCLIENT Char(4),
        MYCA Numeric(15,2) )
    AS
    begin
      FOR SELECT F.CLIENT, SUM(F.MNT_TOT)
       FROM FACTURES F
       WHERE f.YM_FACTURE=:mydate
       GROUP BY CLIENT
       INTO myclient,myCA
      DO  BEGIN 
            SUSPEND;
          END
    END^
    oublier le SUSPEND ne renvoi rien du tout
    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

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Appel d'une store proc avec paramètres
    Par mcdotta dans le forum Access
    Réponses: 8
    Dernier message: 22/05/2007, 19h30
  2. Oracle - SQLJ '- Stores Proc Java
    Par kamalito dans le forum Oracle
    Réponses: 1
    Dernier message: 27/09/2005, 12h11
  3. pbm avec les foreigns keys.....
    Par j_bonc dans le forum PostgreSQL
    Réponses: 4
    Dernier message: 11/06/2004, 10h23
  4. store proc comme fonction
    Par Bernybon dans le forum MS SQL Server
    Réponses: 9
    Dernier message: 12/03/2004, 21h45
  5. Pbm avec les '&'...
    Par AmaX dans le forum Composants VCL
    Réponses: 2
    Dernier message: 19/08/2002, 11h08

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