begin process at 2012 05 26 17:54:48
  Trouver un code source :
 
dans
 
Accueil > Forum > 

SQL

 > 

Oracle

 > 

Divers

 > 

Message de raise_application_error dans les triggers


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Message de raise_application_error dans les triggers

mardi 7 juillet 2009 à 10:49:00 | Message de raise_application_error dans les triggers

LAFONT

Bonjour

J'ai un trigger très simple : je veux interdite l'insertion dans certains cas .
Comme le ROLLBACK, COMMIT est interdit dans le trigger, j'utilise raise_application_error. Mias je ne veux voir que mon message et non les autres

exemple de sortie : je veux seulement ORA-20100 et pas les autres

ERREUR à la ligne 1 :
ORA-20100: Insertion ou mise à jour interdite
ORA-06512: à "SYS.FGIT1", ligne 17
ORA-04088: erreur lors d'exécution du déclencheur 'SYS.FGIT1'

Comment ne pas afficher ORA-06512 et ORA-04088 (qui donne le nom du trigger, ce que je veux pas) ?

CREATE OR REPLACE TRIGGER fgit1
    AFTER INSERT ON ulis.fgi FOR EACH ROW
declare
retour NUMBER;
INTERDIT EXCEPTION;
AUTORISE EXCEPTION;
BEGIN
dbms_output.put_line('code= '|| :new.code);
dbms_output.put_line('libelle= '|| :new.libelle);

IF INSERTING THEN
dbms_output.put_line('INSERTION');
IF (:new.code  = :new.libelle)   THEN
dbms_output.put_line('***********************INSERTION INTERDITE');
raise_application_error (-20100,'Insertion ou mise à jour interdite',FALSE);
ELSE
dbms_output.put_line('\n******************* AUTORISE *********************');
   END IF;
END IF;
END;
/

Merci

F Lafont
mardi 7 juillet 2009 à 11:19:55 | Re : Message de raise_application_error dans les triggers

nivsql

De but en blanc comme ca je dirais qu'une erreure de ce type n'est déjà pas sensée etre vue de l'utilisateur, c'est a l'application de reccuperer les erreurs, de les interpreter et de remonter une information fonctionnelle a l'utilisateur.

Tu dois etre la sous toad ou SqlPlus qui sont des outils de devellopement/administration et qui donc remontent toutes les erreurs de maniere brute (pour aider au debug) c'est aussi pour ca que tu n'a aucun probleme avec tes dbms_output (dans un trigger on frôle l'hérésie)

Un trigger communique avec l'appliaction applante, pas avec l'utilisateur, ce devrait etre un principe de developpement.

Imagine dans ton cas une proc stock avec un bloc

Begin
insert into ulis.fgi (code, libelle) values (:v_code, :v_libelle);
exception
When -20100 then
dbms_output.put_line('***********************INSERTION INTERDITE');
When Other
dbms_output.put_line('erreur :' || to_char(SQLERR) || ' : ' || SQLERRM);
End

a ce moment la l'utilisateur ne vois aucun message d'erreur mais juste ton dbms_output
mardi 7 juillet 2009 à 11:29:25 | Re : Message de raise_application_error dans les triggers

LAFONT

Bonjour,

Mon problème est sous sqlplus ou toad en fait.
Je veux interdire les insertions autres que celles faites par l'application. Donc pas d'insert possible par sqlplus. (Mon trigger avec dbms_output est en exemple simple pour tester). Je peux aussi ne rien afficher. Ce que je veux surtout,c'est qu'on ne voit pas le nom du trigger (ou de la fonction) qui appelle le raise_application_error.

Merci
F lafont

mardi 7 juillet 2009 à 12:29:12 | Re : Message de raise_application_error dans les triggers

nivsql

J'avous que je seche, comme je te l'ai dis, SqlPlus et Toad sont des applications particulieres et leur comportement normal est d'afficher toute la stack d'erreur. Je doute que ton probleme soit solvable.


Cette discussion est classée dans : insertion, output, ora, line, dbms


Répondre à ce message

Sujets en rapport avec ce message

faire une insertion sur plusieures tables [ par tenrod ] bijour!je voudrais savoir si il est possible d'effectuer un insert sur plusieures tables du genre:insert into latable1, latable2, latable3...values va Insertion de fichiers dans une base de donnees [ par michimanon ] Bonjour tout le monde svp je voudrais savoir comment inserer des fichiers (pdf,word,images et autres) dans vba sous access - insertion d'une requete dans une table [ par bonnaud ] Bonjour, J'ai fait une requête sous access en vba qui me permet de calculer un nouveau champ que j'ai nommé total à partir d'une table. J'arrive à vis Insertion Date / Heure [ par LordBob ] Bonsoir a tous,voila en fait je développe un programme pour lequel je dois effectuer des insertions dans des tables d'une base de donéee. Je n'ai qu'u Insertion auatomatique de GUID sous sql serveur 2000 [ par Arthenius ] Salut tout le monde,voila ne souhaitant plus utiliser les compteurs auto-incrementer pour mes primary key (car je souhaite pouvoir intégrer dans une m [SP][SQL Serveur]Comment utiliser un parametre en output dans différentes procédures stockées [ par Arthenius ] Salut a tousVoila je "tente" d'utiliser deux SP en passant des parametres entre elles avec certains en OUTPUT...Par exemple dans une de mes SP je fais Insertion d'une date [ par LordBob ] Bonjour a tous,voila cela fait un certain temps que j'essaie de faire une requete SQL pour inséré une date dans Access, seulement, voila impossible, v help insertion de données [ par tommie ] bonjour, j'ai une base ACCESS avec une table enfant qui est faite de la forme:matricule numeriquedate_naissance datenumenfant numeriqueavec comme donn Gérer une insertion d'heure par demi-heure [ par VivoBaggio ] Salut. Est-ce que c'est possible de gérer l'insertion d'un cours par demi-heure sur la BDD. Par exemple, selon le code suivant :INSERT INTO COURS (Cod [trigger] Ajouter le n° de client lors d'une insertion d'enregistrement [ par gderenne ] Bonjour,J'ai développé un Trigger pour concevoir un n° de client de type 2006-00011 afin de l'ajouter à l'enregistrement que mon appli inserera dans l


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,607 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales