[SQL] gestion des erreurs

Fermé
savior Messages postés 3 Date d'inscription mercredi 17 mai 2006 Statut Membre Dernière intervention 30 novembre 2009 - 17 mai 2006 à 10:45
 bigguiz - 10 mai 2007 à 13:01
Bonjour à vous,

j'ai un léger problème !

je voudrais en fait faire un fichier ".SQL" qui capturerait les possibles erreurs lors de l'exécution de ce fichier, et les mettrait dans une table SQL.

Ainsi dans le programme suivant:
- je fais un DECLARE, pour capturer par la suite les erreurs,
- puis une boucle infinie While (1), afin que ce programme dure indéfiniment et que je puisse tranquillement "killer ce processus", simulant ainsi une erreur de connexion (je crois)
- enfin, je tente de capturer l'erreur, et de la mettre dans la table ERREURS avec EXCEPTION...

DECLARE err_code varchar(201); err_msg varchar(201);
BEGIN
while(0<1)
loop
insert into TABLE1 (id, libelle) VALUES
(
'1', 'nom'
);
commit;
end loop;
EXCEPTION
WHEN OTHERS THEN
err_code := SQLCODE;
err_msg := substr(SQLERRM,1,200);
begin
INSERT INTO ERREURS (nom, err_code, err_msg)
VALUES('nom', err_code, err_msg);
end;
END;
/

De plus, TABLE1 et ERREURS sont créées ailleurs que dans ce fichier, ainsi:
create table TABLE1 ( id varchar(50), libelle varchar(50));
create table ERREURS (nom varchar(50), err_code varchar(50), err_msg varchar(50));


Ainsi mon problème est le suivant :
- quand je lance le fichier (avec sqlplus), et que je Kill son processus, rien n'est rajouté dans la table ERREURS (alors qu'une erreur de connexion devrait être affichée)

J'espère que vous avez une solution à mes problèmes!!!

Merci d'avance,
V.
A voir également:

1 réponse

ca vient que pour que les modifs soient prises en compte, il faut commiter, avec la fonction commit();
0