Exception definie par l utilisateur sous ORACLE (+Delphi) [RESOLU]

Exception definie par l utilisateur sous ORACLE (+Delphi) [RESOLU] - SQL/NoSQL - Programmation

Marsh Posté le 15-09-2003 à 14:19:27    

Je viens de coder un trigger avec des blocs de tests, pour chaque bloc g defini des exceptions, a chaque test errone j appelle par un RAISE l exception correspondante...
Je DOIS traiter ces exceptions sur mon appli (Delphi), comment puis je faire pour eviter l erreur ORA-06510, je comprends bien qu il me demande de coder un traitement pour chaque exception mais je n en ai nullement besoin , g bien essaye de mettre un bloc du style :  
 
EXCEPTION
  WHEN OTHER THEN
    ROLLBACK;
END;
 
mais ca ne regle en rien mon probleme....je voudrais juste pouvoir sous delphi recuperer le nom de "mon" exception....
 
ex :  
 
errBadDate exception
 
....RAISE errBadDate;
 
=> je voudrais recup errBadDate en exception sous Delphi sans declencher d erreur du style ORA-06510 dans mon trigger
 
 
BREF pour resumer je voudrais generer une exception sous ORACLE dont je recuperais la valeur sous Delphi pour effectuer le traitement adequat...
 
Qqun peut il m aider a ce sujet ? plz HELP ! je remercie toute ame bien veillante qui pourra me repondre  :jap:


Message édité par mkracing66 le 02-10-2003 à 11:17:15
Reply

Marsh Posté le 15-09-2003 à 14:19:27   

Reply

Marsh Posté le 15-09-2003 à 23:44:27    

personne n a d idee ou tout le monde s en fout de oracle ? :p:p:p:p

Reply

Marsh Posté le 02-10-2003 à 11:15:26    

Pour aider ceux qui seraient amenes a faire la meme chose voici ce que j ai pu trouve apres moult tests, recherches dans la doc oracle etc...
 
Sous oracle dans sa proc stockee ou trigger il faut mettre un bloc standard du style "raise" et dans le bloc pour le handle des exceptions il faut utiliser "raise_application_error".
 
Sous delphi, il faut utiliser des elements un peu plus specifiques des exceptions.
 
Par exemple :  
 
Pour Oracle

Code :
  1. BEGIN
  2.   IF condition THEN
  3.     RAISE myerror;
  4.   END IF;
  5. EXCEPTION
  6.   WHEN myerror THEN
  7.     RAISE_APPLICATION(-20000,'test descriptif'); -- <= -20000 etant une valeur decidee de facon arbitraire (il existe une plage bien precise)
  8. END;


 
Pour Delphi

Code :
  1. Try
  2.   ...
  3. Except
  4.   on E : Exception Do
  5.   Begin
  6.     if E is EDBEngineError Then
  7.     begin
  8.       for i:= 0 to EDBEngineError( E).ErrorCount - 1 Do
  9.       begin
  10.         // ivaleur recupere le numero de l exception cad 20000
  11.         ivaleur := EDBEngineError( E).Errors[i].NativeError;
  12.       end;
  13.     end;
  14.   end;
  15. end;


 
Voila ca m a bien pris la tete, en esperant que ca en aidera certains ;)


Message édité par mkracing66 le 02-10-2003 à 11:16:19
Reply

Marsh Posté le 05-07-2005 à 14:32:20    

Citation :

RAISE_APPLICATION(-20000,'test descriptif');


 
 
juste un ptit détail : c

Code :
  1. RAISE_APPLICATION_ERROR(-20000,'test descriptif')

sous oracle ...  ;)  ;)


Message édité par bourhoud le 05-07-2005 à 14:33:01
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed