Précédent   Forum des professionnels en informatique > Bases de données > Oracle > PL/SQL
PL/SQL Forum d'entraide sur le PL/SQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 28/09/2011, 19h19   #1
Invité régulier
 
Inscription : novembre 2009
Messages : 39
Détails du profil
Informations forums :
Inscription : novembre 2009
Messages : 39
Points : 8
Points : 8
Par défaut Gestion des exceptions et continuité du script

Bonjour,

J'ai un script lancé par SQL*PLUS qui fait de 1 à x INSERT, parfois certains insert plante et je voulais donc pouvoir être avisé lorsque sa arrive.

Actuellement, mon script ne contient aucun DECLARE, BEGIN, END, uniquement les set et les INSERT.

Je voulais donc savoir si il avait une façon de faire pour gèrer des exceptions tout en continuant mon traitement ?

En parcourant le forum j'ai vu des exemples comme .

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
 
SET ....
spool ....
 
DECLARE
 
BEGIN
 
// INSERT
 
EXCEPTION
      WHEN OTHERS
       //traitement
END ;
 
commit;
 
DECLARE
 
BEGIN
 
// INSERT
 
EXCEPTION
      WHEN OTHERS
       //traitement
END ;
commit;
 
// Ect..ect..
Mais, ça ne fonctionne pas.

Auriez-vous des idées ?

Merci !
JonathanMQ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/09/2011, 20h32   #2
Membre expérimenté
 
Homme Mohamed Houri
Inscription : mars 2010
Messages : 286
Détails du profil
Informations personnelles :
Nom : Homme Mohamed Houri
Localisation : France

Informations forums :
Inscription : mars 2010
Messages : 286
Points : 563
Points : 563
Utilisez DML error logging comme suit par exemple

Code :
1
2
3
4
5
6
7
 
 INSERT INTO t_target
 SELECT a,b,c
 FROM t_source
 WHERE 
    ...
 log errors INTO err$_t_target reject LIMIT unlimited;
vous créerez la table err$_t_target comme suit

Code :
1
2
3
4
5
 
BEGIN
   DBMS_ERRLOG.create_error_log (dml_table_name => 't_target');
END;
/
Le "DML error logging" a quelques restrictions mais dans un premier temps essayez ce qui précède et, au besoin, revenez ici pour plus de détails.
__________________
Bien Cordialement
www.hourim.wordpress.com
Mohamed.Houri est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/09/2011, 20h43   #3
Invité régulier
 
Inscription : novembre 2009
Messages : 39
Détails du profil
Informations forums :
Inscription : novembre 2009
Messages : 39
Points : 8
Points : 8
Bonjour,

Le but est d'envoyer un courriel dans l'exception, je ne dois donc pas logger l'erreur.

Aussi, la commande que vous m'avez donné pour créer une table de log me donne une erreur: ORA-44002 : nom d'objet non valide.

Merci
JonathanMQ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/09/2011, 08h40   #4
Membre expérimenté
 
Homme Mohamed Houri
Inscription : mars 2010
Messages : 286
Détails du profil
Informations personnelles :
Nom : Homme Mohamed Houri
Localisation : France

Informations forums :
Inscription : mars 2010
Messages : 286
Points : 563
Points : 563
la table t_target doît être remplacée par le nom de votre propre table

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
 
mhouri> BEGIN
  2     DBMS_ERRLOG.create_error_log (dml_table_name => 't_target');
  3  END;
  4  /
BEGIN
*
ERROR at line 1:
ORA-44002: invalid object name 
ORA-06512: at "SYS.DBMS_ASSERT", line 283 
ORA-06512: at "SYS.DBMS_ERRLOG", line 112 
ORA-06512: at line 2 
 
 
mhouri> DESC t_target
ERROR:
ORA-04043: object t_target does NOT exist 
 
 
mhouri> CREATE TABLE t_target (x number);
 
TABLE created.
 
mhouri> BEGIN
  2     DBMS_ERRLOG.create_error_log (dml_table_name => 't_target');
  3  END;
  4  /
 
PL/SQL procedure successfully completed.
 
mhouri> SELECT * FROM err$_t_target;
 
no rows selected
 
mhouri> spool off;
Pour le reste, donnez nous un aperçu de votre code et nous allons vous suggérer une probable solution.
__________________
Bien Cordialement
www.hourim.wordpress.com
Mohamed.Houri est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 23h21.


 
 
 
 
Partenaires

Hébergement Web