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 Oracle Discussion :

Récupérer erreur sql dans un ksh


Sujet :

SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Octobre 2006
    Messages
    123
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 123
    Par défaut Récupérer erreur sql dans un ksh
    Bonjour,

    J'ai le script suivant dans un KSH :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    `sqlplus $_USER/$_PASSWORD << EOF >> /dev/null
    SET autocommit OFF
    @ update_tmp.sql;
    commit;
    quit;
    EOF;`
    Tout se passe bien mais j'aurai voulu savoir si il y avait un moyen de récupérer les erreurs SQL comme par exemple un 'update' qu'il n'arrive pas à faire et de les rediriger dans un fichier plat.

    Merci beaucoup de votre aide

  2. #2
    Expert éminent
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Par défaut
    remplace /dev/null par le fichier de log de ton choix

  3. #3
    Membre confirmé
    Inscrit en
    Octobre 2006
    Messages
    123
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 123
    Par défaut
    oui je suis d'accord avec toi et c'est ce que j'avais déjà fait au départ mais le problème c'est que j'obtiens ceci :

    "essai.log" [Read only] 5586 lines, 48653 characters

    SQL*Plus: Release 9.2.0.4.0 - Production on Me Nov 14 13:16:23 2007

    Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.


    Connecté à :
    Oracle9i Enterprise Edition Release 9.2.0.4.0 - Production
    With the Partitioning, OLAP and Oracle Data Mining options
    JServer Release 9.2.0.4.0 - Production

    SQL> SQL>
    1 ligne mise à jour.


    1 ligne mise à jour.


    1 ligne mise à jour.


    1 ligne mise à jour.


    1 ligne mise à jour.
    Or je voudrais juste récupérer les ERREURS...

    Comme par exemple :
    SQL> SQL>
    0 ligne mise à jour.


    0 ligne mise à jour.
    Et si possible avoir l'info : quelle ligne à merder....

    c'est possible ou pas ?

    Miciiiiii!

  4. #4
    McM
    McM est déconnecté
    Expert confirmé

    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Juillet 2003
    Messages
    4 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Juillet 2003
    Messages : 4 580
    Billets dans le blog
    4
    Par défaut
    0 lignes mis à jour : ce n'est pas une erreur

    A toi de gérer avec des dbms_output et des SQL%ROWCOUNT

  5. #5
    Expert éminent
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Par défaut
    Ajoute -s après sqlplus pour le mode silencieux

  6. #6
    Membre chevronné
    Avatar de argoet
    Inscrit en
    Mai 2002
    Messages
    582
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 582
    Par défaut
    Votre SQL se deroule sans erreur ORACLE.

    Maintenant si dans votre script chaque Update doit faire au moins une mise à jour , c'est à vous de le gerer dans votre SQL

    En l'occurence ici , je vous conseille de passer par un block PL/SQL et de compter le nombre de "record" modifiés par chaque Update via la variable "sql%rowcount" et d'utiliser par exemple la fonction "Raise_application_error()"

    Exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Begin 
         Update Ma_Table Set Mon_Champ = Une_Valeur
         Where Ma_Condition_Where
     
         If Sql%Rowcount = 0 Then   
             Raise_Application_Error(-20000,'Aucun Update Realisé');                            
         End If;   
    End;

  7. #7
    Membre confirmé
    Inscrit en
    Octobre 2006
    Messages
    123
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 123
    Par défaut
    Merci Capitaine Jean-Luc Picard, je vais testé ça...
    Et oui c'est vrai ce n'est pas une erreur... j'me suis mal exprimé...

    Merci


  8. #8
    Membre confirmé
    Inscrit en
    Octobre 2006
    Messages
    123
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 123
    Par défaut
    En fait je n'ai pas tout à fait ce que je veux...

    Mon fichier update_tmp.sql contient une liste de 'update' comme vous pouvez vous en doutez mais il n'est pas sur que tous les updates fonctionne, j'entends par là que la ligne ne soit pas mis-à-jour...Donc j'arrive bien à récupérer le nombre de lignes (avec un p'tit grep sur "0 ligne mis-à-jour") qui n'ont pas été mis-à-jour mais je voudrai savoir lesquels ?

    Par exemple si cette ligne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    UPDATE ma_table SET COLONNE_1 = '3434',RESET_DATE=sysdate WHERE UN_ID = '0664509504'
    ne passe pas je voudrais avoir le numéro 0664509504 en sortie de ma requete ou redirigé dans un fichier...

    C'est possible ou pas ?

    Merci encore!

Discussions similaires

  1. SQL dans du KSH
    Par jeremy13 dans le forum SQL
    Réponses: 7
    Dernier message: 08/11/2007, 18h52
  2. récupérer valeur sql - dans un script batch
    Par persam dans le forum SQL
    Réponses: 6
    Dernier message: 09/08/2007, 16h22
  3. [OpenOffice][Base de données] Erreur SQL dans OOo.Base
    Par vmalep dans le forum OpenOffice & LibreOffice
    Réponses: 2
    Dernier message: 30/06/2007, 23h56
  4. [SQL] Erreur SQL dans php
    Par joker vb dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 03/05/2007, 11h37
  5. Erreur SQL dans forum
    Par bigball dans le forum Langage
    Réponses: 2
    Dernier message: 17/07/2006, 03h48

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