Exception levée dand firebird (D4 FB FIBPLUS)
Bonjour à tous, (
Mon problème est le suivant :
Dans Firebird, je lève une exception pour une valeur existant déja dans la base :
Code:
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*/
............... |
Ma PS fonctionne bien, mais je n'arrive pas à catcher l'exception sous DELPHI !
sous DELPHI le message est le suivant :
Sous DELPHI :
Code:
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; |
Le code affiche :
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 ?