Rechercher : dans
Par :

Problème sous oracle 9i

Dernière réponse le 19 mai 2008 à 10:09:00 gaficat, le 17 jun 2003 à 09:19:31 
 Signaler ce message aux modérateurs

Bonjour,
j'ai développé un trigger sous oracle qui gère des exceptions, lors de la compilation il n'y a pas d'erreur, mais lorsque je fais un insert qui declenche mon trigger des erreurs se produisent

ora-20001:c'est mon exception qui se declenche donc pas de problème
ora06512!!!!!!
ora04088!!!!!!

create or replace trigger verifupdatepuart
before update of puart on article
for each row
begin
if (:new.puart>:old.puart*1.1) then
raise_application_error(-20111,'l augmentation du prix est trop importante');
end if;
end;

Pouvez-vous m'expliquer pourquoi Oracle génère ces erreurs, je vous remercie tous par avance

1

batmat, le 17 jun 2003 à 13:37:03

Il ne "génère" pas d'erreur : c'est la pile des erreurs. Regarde le libellé des erreurs avant de poser des questions sur Oracle ;-)

Les erreurs de -06500 à -06599 sont des erreurs PL/SQL
=> ORA-06512 : indique la ligne de l'erreur (at str line num)

Les erreurs de -04070 à -04099 sont les messages des triggers :
=> ORA-04088 : error during execution of trigger nomdutrigger

Au niveau oracle, je ne suis pas sur qu'on puisse changer ce comportement (il existe bien un deuxième paramètre à raise_application_error, à TRUE ou FALSE, censé mettre l'erreur dans la pile ou tout écraser, mais chez moi en Oracle 8, ça ne change rien :-( )

Mais ne t'inquiete pas trop : le SQLCODE vaudra bien la bonne valeur (celle de ton raise_application_error), donc dans le traitement du "dessus", tu n'auras aucun pb si c'est ce que tu crains :-)

@++
Poster, poster encore et toujours :-)

Répondre à batmat

2

gaficat, le 17 jun 2003 à 17:12:59

Je te remercie mais le problème c'est que je ne comprend pas pourquoi ces erreurs TRIGGERv se declenchent .
il semblerait que l'utilisation du raise puis du raise_application_error se mette en conflit

Répondre à gaficat

3

batmat, le 17 jun 2003 à 17:37:26

Pourtant, c logique : c'est la pile des erreurs comme je l'ai dit :

Au raise_application_error, Oracle enregistre qu'une exception est survenue dans le trigger verifupdatepuart => ORA-04088, Ensuite il enregistre le numéro de la ligne et l'endroit en erreur => ORA-06512, Pour finir, ton erreur applicative est enregistrée avec ton libellé => ORA-20901

C'est tout

@++
Poster, poster encore et toujours :-)

Répondre à batmat

4

nada, le 17 avr 2008 à 00:43:04

Salut,
j'ai un tp me demande de creer une base de données mais le problem c ke quand je lance la requete permettant la creation il me donne une erreur ke la cration du fichier de control est impossible

Répondre à nada

5

 mohammed, le 19 mai 2008 à 10:09:00

Je veut installer oracle 9i sur debian4.0 mais j'ai un problemedurant l'installation:
libdb.so.2: cannot open shared object file: No such file or directory

Répondre à mohammed