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

Bases de données Delphi Discussion :

UIB Stored Proc


Sujet :

Bases de données Delphi

  1. #1
    Membre à l'essai
    Inscrit en
    Octobre 2003
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Octobre 2003
    Messages : 16
    Points : 14
    Points
    14
    Par défaut UIB Stored Proc
    Bonjour,
    J'utilise les composants UIB pour accéder à des procédures stockées d'une base Firebird 2.1.

    Contexte: composant uibTansaction + uibQuery

    Quand je sette mon composant uibquery => sql avec :
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    select * from updateentreehomme

    et que dans mon code d'exécution de la procedure :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    procedure TbgaDataModule.UpdateEntreeGen(pDate: TDateTime; pStoreProc: string);
    begin
      uibqUpdateentreeGen.BuildStoredProc(pStoreProc);
      uibqUpdateentreeGen.Params.ByNameAsDateTime['PDATE'] := pDate;
      uibqUpdateentreeGen.open;
      uibqUpdateentreeGen.Close(etmCommit);
    end;
    avec pStoreProc = updateentreehomme
    tout ce passe correctement.

    Par contre si je veux rendre générique le code de cette manière:

    uibquery => sql : vide

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    procedure TbgaDataModule.UpdateEntreeGen(pDate: TDateTime; pStoreProc: string);
    begin
      uibqUpdateentreeGen.BuildStoredProc(pStoreProc);
      uibqUpdateentreeGen.Params.ByNameAsDateTime['PDATE'] := pDate;
      uibqUpdateentreeGen.SQL.Clear;
      uibqUpdateentreeGen.SQL.Add(format('select * from %s',[pStoreProc]));
      uibqUpdateentreeGen.open;
      uibqUpdateentreeGen.Close(etmCommit);
    end;
    j'obtiens l'erreur :
    Dynamic SQL Error
    Input parameter mismatch for procedure updateentreehomme
    unsuccessful execution caused by a system error that precludes successfull execution of subsequent statements
    error code 249
    en mode debug on a bien le uibqUpdateentreeGen.SQ.text identique !
    Une idée avant que je multiplie 26 fois la même procédure et les mêmes composants?

  2. #2
    Expert éminent sénior
    Avatar de Cl@udius
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2006
    Messages
    4 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 4 878
    Points : 10 008
    Points
    10 008
    Par défaut
    Salut

    Nul besoin de renseigner la propriété SQL du TUIBQuery lors de l'appel à une procédure stockée (elle doit rester vide).

    Ta procédure UpdateEntreeGen devrait plutôt ressembler à ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    procedure TbgaDataModule.UpdateEntreeGen(pDate: TDateTime; pStoreProc: string);
    begin
      with uibqUpdateentreeGen do
      begin
        BuildStoredProc(pStoreProc, False);
        Params.ByNameAsDateTime['PDATE'] := pDate;
        Execute;
        Close(etmCommit);
      end;
    end;
    Comme visiblement tes PS ne renvoient pas de jeux d'enregistrements, mets à False le paramètre forSelect de BuildStoredProc, et lance les par un Execute (et non Open).

    @+ Claudius

  3. #3
    Membre à l'essai
    Inscrit en
    Octobre 2003
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Octobre 2003
    Messages : 16
    Points : 14
    Points
    14
    Par défaut argument false
    Bonjour,
    Merci pour cette réponse. cela fonctionne effectivement sans l'argument false de buildstoredproc.

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

Discussions similaires

  1. Oracle10 Delphi2006 Bde+odbc Stored Proc
    Par cedric.mechler dans le forum Oracle
    Réponses: 1
    Dernier message: 11/07/2006, 10h05
  2. MyISAM -> InnoDB (Problème Stored Proc)
    Par Erakis dans le forum Outils
    Réponses: 8
    Dernier message: 12/12/2005, 20h02
  3. Comment obtenir la date dans une store proc?
    Par Dnx dans le forum Langage SQL
    Réponses: 4
    Dernier message: 17/10/2005, 17h31
  4. Oracle - SQLJ '- Stores Proc Java
    Par kamalito dans le forum Oracle
    Réponses: 1
    Dernier message: 27/09/2005, 12h11
  5. store proc comme fonction
    Par Bernybon dans le forum MS SQL Server
    Réponses: 9
    Dernier message: 12/03/2004, 21h45

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