j'ai un tel code:Gestion des erreurs Oracle
DECLARE
e_not_exist EXCEPTION;
PRAGMA EXCEPTION_INIT(e_not_exist, -942);
car_name VARCHAR2(20);
BEGIN
select name_of_factory into car_name from car where car_id = 1;
dbms_output.put_line(car_name);
EXCEPTION
when e_not_exist then
dbms_output.put_line('Table or view does not exist');
when OTHERS then
dbms_output.put_line(to_char(SQLCODE));
END;
En fait, mon nom de la table est CARS mais pas CAR. Mais Oracle ne gère pas cette exception et me donne une erreur ORA-00942: La table ou la vue n'existe pas. Comment puis-je gérer cette exception?
merci. Si je comprends bien, il y a des erreurs de compilation et d'exécution. Comment puis-je identifier l'erreur d'exécution ou de compilation si je connais le numéro d'erreur? – maks
Ce n'est pas basé sur le nombre. Comme vous pouvez le voir à partir de cet exemple, la même erreur (-942) peut être soit à l'exécution, soit à la compilation selon les circonstances. Le problème est que lorsque vous utilisez DECLARE/BEGIN inline, il est difficile de faire la différence. Une option consiste à créer une procédure, puis à l'exécuter. Une autre consiste à faire ce que vous avez ici - puisque vous utilisez 'WHEN OTHERS', toutes les exceptions d'exécution seront interceptées de cette façon, donc les erreurs immédiates qui apparaîtront seront des temps de compilation. – Dan