Bonjour,
j'essaie d'executer un procedure stockée avec c++builder

voici le code pour lancer cette procedure :


Code c++ : 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
bool __fastcall TDataModule1::_UPDATE_PERSONNE(TClientDataSet * pCds)
{
        //TODO: mise a jour d'un enreg table personne
 
  TParams *Param=new TParams();
  bool succes=false;
 
  try{
      try{
 
          IBStoredProc1->StoredProcName="UPDATE_PERSONNE";
 
          // creation de parametres
          Param->CreateParam(ftInteger,"ID_PERS",ptInput);
          Param->CreateParam(ftString,"NOM",ptInput);
          Param->CreateParam(ftString,"PRENOM",ptInput);
          Param->CreateParam(ftString,"ADRESSE",ptInput);
          Param->CreateParam(ftString,"VILLE",ptInput);
          Param->CreateParam(ftInteger,"CODE_POSTAL",ptInput);
          Param->CreateParam(ftString,"ENTREPRISE",ptInput);
 
          // regardez si on lit
          //ShowMessage(pCdsDelta->FieldB&yName("NOM")->AsString);
 
 
          Param->ParamByName("ID_PERS")->AsInteger=pCds->FieldByName("ID_PERS")->AsInteger;
          Param->ParamByName("NOM")->AsString=pCds->FieldByName("NOM")->AsString;
          Param->ParamByName("PRENOM")->AsString=pCds->FieldByName("PRENOM")->AsString;
          Param->ParamByName("ADRESSE")->AsString=pCds->FieldByName("ADRESSE")->AsString;
          Param->ParamByName("VILLE")->AsString=pCds->FieldByName("VILLE")->AsString;
          //ShowMessage( pCds->FieldByName("CODE_POSTAL")->AsString.Length());
 
          Param->ParamByName("CODE_POSTAL")->AsInteger=pCds->FieldByName("CODE_POSTAL")->AsInteger;
          Param->ParamByName("ENTREPRISE")->AsString=pCds->FieldByName("ENTREPRISE")->AsString;
 
          DataModule1->IBStoredProc1->Params=Param;
          DataModule1->IBStoredProc1->Prepare();
          DataModule1->IBStoredProc1->ExecProc();
 
 
          delete Param;
          succes=true;
 
      }
 
      catch(...)
      {
      succes= false; // en cas d'erreur
      }
    }
 
  __finally{ // en cas de succès ou non
 
       DataModule1->IBStoredProc1->UnPrepare();
       delete Param;
       return succes;
  }
 
}

Voici la procedure stockée:

Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
BEGIN
  /* MISE A JOUR D'UNE PERSONNE */
 
    UPDATE PERSONNE
 
    SET  PERSONNE.NOM=:NOM,
         PERSONNE.PRENOM=:PRENOM,
         PERSONNE.ADRESSE=:ADRESSE,
         PERSONNE.CODE_POSTAL=:CODE_POSTAL ,
         PERSONNE.VILLE=:VILLE, /* MODIF */
         PERSONNE.ENTREPRISE=:ENTREPRISE
 
    WHERE PERSONNE.ID_PERS=:ID_PERS  ;
 
END

le type des paramètres :
Code firebird : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
 
ID_PERS :INTEGER
NOM :VARCHAR(20)
PRENOM :VARCHAR(20)
ADRESSE :VARCHAR(50)
CODE_POSTAL :INTEGER
VILLE :VARCHAR(20)
ENTREPRISE :VARCHAR(20)

quant j'essaie d'executer ceci avec C++builder 6 j'ai ce message

---------------------------
Notification d'une exception du débogueur
---------------------------
Le projet AnnuaireOfficiel.exe a provoqué une classe d'exception EIBInterBaseError avec le message 'Dynamic SQL Error
SQL error code = -303
conversion error from string "Belcaire"'. Processus stoppé. Utilisez Pas-à-pas ou Exécuter pour continuer.
---------------------------
OK Aide
---------------------------

Cette procédure s’exécute bien avec IbExpert mais avec BCB ?
d’où cela vient je vois pas....qui peut m'expliquer et que faire?

Je tourne en rond

merci de vos réponses et bonnes fêtes