Bonjour à tous, (
Mon problème est le suivant :
Dans Firebird, je lève une exception pour une valeur existant déja dans la base :
Ma PS fonctionne bien, mais je n'arrive pas à catcher l'exception sous DELPHI !
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 SET TERM ^ ; CREATE OR ALTER PROCEDURE GESTION_EQUIPE ( mode char(1), id_eq smallint, lib_eq char(10)) returns ( code_id_eq type of id_eq$) as BEGIN /*------------*/ SELECT ID_EQ FROM TB_EQ WHERE LIB_EQ=TRIM(UPPER(:LIB_EQ)) INTO :CODE_ID_EQ; IF (not(ID_EQ IS NULL) AND ((MODE<>'I') or (MODE<>'M'))) THEN BEGIN EXCEPTION eq_existe; END else BEGIN /*------------*/ IF (MODE='I') THEN /* insertion*/ ...............
sous DELPHI le message est le suivant :
Sous DELPHI :
Le code affiche :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 Try DB.Connected:=True; Transaction.Active:=true; PS_1.ExecProcedure('GESTION_EQUIPE',['I',1,'VAC1']); except on e:EFIBError do begin Transaction.Rollback; showMessage(e.message); showMessage(IntToStr(e.sqlcode)); end; end;
exception .
exception 2.
EQ_EXISTE.
Essai
At procedure 'GESTION_EQUIPE' line: 15, col: 13.
puis
-836.
En mettant n'importe quelle exception dans firebird, le SQLCode est toujours -836, seul le message change !
Comment puis je intercepter l'exception EQ_EXISTE dans delphi
Faut il plutôt que je pense à un traitement dans la PS qui me retourne une valeur si le LIB_EQ existe déja ?
Partager