IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Sql*Plus Oracle Discussion :

Gestion des erreurs sur spool


Sujet :

Sql*Plus Oracle

  1. #1
    Nouveau membre du Club
    Inscrit en
    Novembre 2009
    Messages
    56
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 56
    Points : 38
    Points
    38
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  2. #2
    Membre averti Avatar de xdescamp
    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    300
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Nord (Nord Pas de Calais)

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

    Informations forums :
    Inscription : Octobre 2008
    Messages : 300
    Points : 442
    Points
    442
    Par défaut
    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.

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    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 : 34
    Points
    34
    Par défaut ou...
    bonjour,
    ou laissez le

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    // pour afficher les commandes
    set echo on
    vous verrez ainsi toutes les requêtes et celles qui plantent.

    salutations

  4. #4
    Membre habitué Avatar de JQueen
    Inscrit en
    Octobre 2008
    Messages
    214
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations forums :
    Inscription : Octobre 2008
    Messages : 214
    Points : 126
    Points
    126
    Par défaut
    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 ).

  5. #5
    Rédacteur

    Homme Profil pro
    Consultant / formateur Oracle et SQL Server
    Inscrit en
    Décembre 2002
    Messages
    3 460
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant / formateur Oracle et SQL Server

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 460
    Points : 8 074
    Points
    8 074
    Par défaut
    En utilisant un SQL*Plus 11g (même si le serveur est en 10g) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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 12c, 11g, 10g ; sécurité 11g

    Ma dernière formation Oracle 19c publiée sur Linkedin : https://fr.linkedin.com/learning/oracle-19c-l-administration

Discussions similaires

  1. Gestion des erreurs sur les noms des villes
    Par yosryosr dans le forum Pascal
    Réponses: 3
    Dernier message: 18/04/2008, 11h52
  2. gestions des erreurs sur les Noms des villes
    Par yosryosr dans le forum Langage
    Réponses: 2
    Dernier message: 15/04/2008, 12h07
  3. Gestion des erreurs sur SQLServer 2005
    Par vhellers dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 28/08/2007, 09h20
  4. Gestion des erreurs sur une commande multiple
    Par domiq44 dans le forum Shell et commandes GNU
    Réponses: 5
    Dernier message: 05/10/2006, 15h03
  5. [PHP-JS] gestion des erreurs sur liste déroulente
    Par HwRZxLc4 dans le forum Langage
    Réponses: 9
    Dernier message: 28/05/2006, 03h21

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo