[Oracle] Debug - Forcer le plantage dans cas particulier...

Debug - Forcer le plantage dans cas particulier... [Oracle] - SQL/NoSQL - Programmation

Marsh Posté le 22-07-2004 à 16:45:06    

Y'a moyen sous Oracle de forcer ce dernier à retourner une erreur lorsqu'une requête SELECT ne tape pas dans un champ ?
 
Ouais, c'est très con, mais en fait je viens d'apporter une modif conséquente à une certaines tables d'une base de données, et en plus de ma recherche dans le code, je voudrais que l'appli plante purement et simplement lorsqu'elle va tenter d'éxécuter une requête que je n'ai pas mis à jour (ça sera plus facile pour débuger, et au moins je suis sûr que je n'oublierai rien...)
 
C'est possible vous pensez ?
 
A noter que ce champ que j'ai rajouté est présent dans tous les index de toutes les tables...


Message édité par Arjuna le 22-07-2004 à 16:45:35
Reply

Marsh Posté le 22-07-2004 à 16:45:06   

Reply

Marsh Posté le 12-08-2004 à 12:00:51    

tu peux utiliser les déclarations des exceptions:
error_name EXCEPTION;
PRAGMA EXCEPTION_INIT (constraint_violated, -xxxxx);
 
ou xxxxx correspond à un numéro d'erreur Oracle (number invalid, ....) Ces numéro sont référence dans tout bon bouquin ou site sur Oracle et son administration.
 
Ensuite, dans ton script:
BEGIN
   SELECT ..........
EXCEPTION WHEN error_name THEN
   insert into error_table(tesxt)values('Champ manquant');
END;
 
Cdt

Reply

Marsh Posté le 12-08-2004 à 12:07:57    

Je ne suis pas sûr d'avoir compris ta réponse.
 
En fait, exemple pratique.
 
Dans ma table "EVE", j'ai quelques 5 000 000 de lignes.
L'ancien index unique était :
(TYPTIE, SIGTIE, TYPEVE, NUMEVE)
 
Seulement, afin de prévoir un mode multi-société, j'ai rajouté le champ CODSOC, qui est biensûr présent dans mon index unique.
 
Il en résulte des performances catastrophiques si je n'utilise pas ce champ dans ma clause WHERE (pas d'utilisation de l'index unique)
 
Je voudrais donc savoir si y'a moyen de forcer Oracle à retourner une erreur lorsque ce champ n'est pas présent dans la clause WHERE de n'importe quel type de requête (SELECT, INSERT, UPDATE, DELETE)
 
Car j'ai bien recherché dans tout mon code pour vérifier que mes requêtes sont mises à jour, mais je préfèrerais avoir une sécurité supplémentaire.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed