Précédent   Forum des professionnels en informatique > Bases de données > Oracle > Outils > Sql*Plus
Sql*Plus Forum d'entraide sur Oracle Sql*Plus
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 15/08/2011, 20h21   #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 erreurs sur spool

Bonjour,

J'ai actuellement un script qui se lance et qui insert des données et qui archive ce qui a été inscript.
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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
 
 
SET echo off
 
SET pagesize 200
 
SET linesize 4000
 
SET long 4000
 
SET LONGCHUNKSIZE 4000
 
SET trimspool ON
 
SET heading off
 
SET feedback off
 
SET underline off
 
SET define off
 
SET termout ON
 
SET trimout ON
 
SET sqlblanklines ON
 
SET wrap ON
 
SET echo ON
 
spool \\dossier\archive\fichier00001.log
 
ALTER SESSION SET NLS_DATE_LANGUAGE = ENGLISH;
 
INSERT INTO maTable(Champs1)
VALUES(1);
 
/* Il peut y avoir de 1 à x commande d'insert, une à la suite de l'autre... */
 
commit;
 
SET echo off
 
spool off
 
SET sqlblanklines off
 
exit
Le problème, c'est que lorsque que mon insert à eu une erreur quelconque, je ne peux pas le savoir, il écrit simplement l'erreur dans le fichier.

Je voulais donc savoir si il y avait une solution pour que l'erreur soit spooler dans un autre fichier ?

Sans que sa interrompt le reste de la commande car il peut y avoir plusieurs commandes d'INSERT.

Merci
JonathanMQ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/08/2011, 22h13   #2
Membre éprouvé
 
Avatar de xdescamp
 
Homme Xavier Descamps
Inscription : octobre 2008
Messages : 297
Détails du profil
Informations personnelles :
Nom : Homme Xavier Descamps
Âge : 36
Localisation : France, Nord (Nord Pas de Calais)

Informations professionnelles :
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : octobre 2008
Messages : 297
Points : 422
Points : 422
Envoyer un message via Skype™ à xdescamp
Bonjour,

L'utilisation de SPOOL ne permet d'utiliser qu'un seul fichier en sortie.
Si vous voulez que les erreurs figurent dans un autre fichier, il faut changer de technique :
- encapsuler chaque instruction INSERT dans un bloc PL/SQL
- faire un DBMS_OUTPUT pour avoir le résultat de la commande INSERT
- traiter les erreurs avec un bloc EXCEPTION et les mettre dans un fichier avec UTL_FILE.
En faisant un bloc PL/SQL par instruction, cela permettra au script de continuer en cas d'erreur.
xdescamp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/08/2011, 11h55   #3
Nouveau Membre du Club
 
Homme
Administrateur de base de données
Inscription : mars 2011
Messages : 15
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Administrateur de base de données

Informations forums :
Inscription : mars 2011
Messages : 15
Points : 33
Points : 33
Par défaut ou...

bonjour,
ou laissez le

Code :
1
2
3
 
// pour afficher les commandes
SET echo ON
vous verrez ainsi toutes les requêtes et celles qui plantent.

salutations
t.merle est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/04/2012, 16h54   #4
Membre du Club
 
Avatar de JQueen
 
Inscription : octobre 2008
Messages : 112
Détails du profil
Informations personnelles :
Âge : 25

Informations forums :
Inscription : octobre 2008
Messages : 112
Points : 51
Points : 51
Envoyer un message via MSN à JQueen Envoyer un message via Skype™ à JQueen
L'utilisation des blocs PL/SQL et plus précisément le package UTL_FILE ( voir ce guide pour plus de détails : http://sheikyerbouti.developpez.com/...=Chap1#L1.2.22 ) permet de gérer les fichiers.

Vous pouvez ainsi gérer séparément toutes les erreurs liées à vos requêtes ( en utilisant le mot clé EXCEPTION ).
JQueen est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/04/2012, 17h23   #5
Rédacteur
 
Inscription : décembre 2002
Messages : 2 387
Détails du profil
Informations personnelles :
Localisation : France, Var (Provence Alpes Côte d'Azur)

Informations forums :
Inscription : décembre 2002
Messages : 2 387
Points : 3 265
Points : 3 265
En utilisant un SQL*Plus 11g (même si le serveur est en 10g) :
Code :
SET ERRORLOGGING ON [ TABLE ma_table ]
va enregistrer toutes les erreurs dans une table qui s'appelle SPERRORLOG par défaut.
De cette façon, il n'y a aucun besoin de modifier le script ni de faire du PL/SQL.
__________________
Consultant / formateur Oracle indépendant
Certifié OCP 10g et 11g, sécurité 11g
Pomalaix est déconnecté   Envoyer un message privé Réponse avec citation 20
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 09h11.


 
 
 
 
Partenaires

Hébergement Web