Problème sous oracle 9i

gaficat Messages postés 3 Statut Membre -  
 Robert -
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

6 réponses

  1. batmat Messages postés 1880 Date d'inscription   Statut Membre 114
     
    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 :-)
    0
  2. gaficat Messages postés 3 Statut Membre
     
    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
    0
  3. batmat Messages postés 1880 Date d'inscription   Statut Membre 114
     
    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 :-)
    0
  4. nada
     
    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
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. mohammed
     
    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
    0
  7. Robert
     
    Ha merci je ne comprenais pas ce que signifiait le message ORA-06512, j'avais bien trouvé quelque chose sur http://www.oracleref.com/en/ORA-06512.html, mais je dois avouer que je ne comprenais pas. Mais en fait batmat l'explique plus simplement (ORA-06512 : indique la ligne de l'erreur (at str line num))

    Merci encore
    0