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 :

Période de date SQL dans un scriptshell


Sujet :

Sql*Plus Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Août 2004
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 62
    Par défaut Période de date SQL dans un scriptshell
    Bonjour les experts,

    Je souhaite via un scriptshell extraire tous les données d'une table sur une période annelle à compter du jour de son exécution. Sachant que je suis sur Oracle 11g ma requête ci-dessous fonctionne bien sauf que on l'a mettant dans un scriptshell elle me retourne une erreur au niveau de la soustraction !!!

    Pourriez-vous m'apporter vos lumières svp.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select * from MaTable DATE_TRM>(sysdate-356);
    Erreur de sortie :

    ERROR at line 1:
    ORA-01843: not a valid month

  2. #2
    Expert confirmé Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 288
    Par défaut
    Bonjour,

    on n'est pas experts, mais on sait utiliser un forum. Les question sql vont dans le sous-forum sql.

    Pourquoi poser la question dans le forum GNU Linux. As-tu des soucis pour écrire ton script (indépendamment du sql) ?

    Si oui, quel est l'interpréteur ? Quel est le message d'erreur ?

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Août 2004
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 62
    Par défaut
    Effectivement mon souci n'est pas SQL comme cité dans mon précédent message mais le problème est Redhat qui n’interprète pas comme il parait la requête SQL dans le scriptshell !!! Si vous êtes modérateur vous pouvez transférer mon message au forum adéquat si un problème de scripting devrait être poser dans un forum de BDD. Merci

  4. #4
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 658
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 658
    Par défaut
    Bonjour,

    il nous faut un peu plus de contexte :
    - OS sur lequel a été rédigé le script
    - commande complète tapée dans la console
    - shell utilisateur par défaut
    - shell utilisé dans le script
    - contenu du script
    - sortie du script en ayant ajouté set -x avant la commande
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Août 2004
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 62
    Par défaut
    Mon code :
    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
     
    sqlplus USER/PASSWORD  << EOF
    spool $1/MonFichierDeSortie\.csv
    set echo off
    set ver off
    set heading on
    set pages 10000
    set linesize 10000
    set null null
    set trimspool on
    set colsep '|'
    select * from MaTable DATE_TRM>(sysdate-356);
    spool off;
    exit;
    EOF
    - OS sur lequel a été rédigé le script
    redhat 2.6.18-308.el5

    - commande complète tapée dans la console
    ./MonShell.sh CheminAbsolut

    - shell utilisateur par défaut
    Shell

    - sortie du script
    ERROR at line 12:
    ORA-01843: not a valid month

  6. #6
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Psuchoo Voir le message
    Effectivement mon souci n'est pas SQL comme cité dans mon précédent message mais le problème est Redhat qui n’interprète pas comme il parait la requête SQL dans le scriptshell !!! Si vous êtes modérateur vous pouvez transférer mon message au forum adéquat si un problème de scripting devrait être poser dans un forum de BDD. Merci
    Je dirais que le problème vient de la requête SQL. Voici une commande sql semblable à la tienne, il y a juste une partie en plus.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT *
    FROM commande
    WHERE datecom < ADD_MONTHS(sysdate, -3) ;
    De plus, ce sera plus pratique de mettre tes commandes sql dans un fichier et de l'appeler comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    sqlplus USER/PASSWORD  << EOF
    @mon_script.sql
    EOF

  7. #7
    Membre émérite Avatar de bstevy
    Homme Profil pro
    Solutions Architect
    Inscrit en
    Mai 2009
    Messages
    552
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Japon

    Informations professionnelles :
    Activité : Solutions Architect
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2009
    Messages : 552
    Par défaut
    Pour savoir, tu es sur que ta colonne datecom est une date ?
    Car si c'est pas le cas, peut etre qu'oracle essaye de faire une transformation implicite d'une colonne en char vers un format date et n'y arrive pas, bin peut etre parce que le mois n'est pas valide, au sens où l'ecriture classic d'une date en sql c'est " DATE 'YYYY-MM-DD' "

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Août 2004
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 62
    Par défaut Problème initial résolu, on passe à un problème de sortie
    Merci ecatomb ta réponse que j'adopte sans critique.

    ADD_MONTHS(sysdate, -3)
    Maintenant après que ma requête marche dans mon script je constate que mon fichier de sortie contient la requête entête puis les informations tracées comme suit sachant que moi je ne souhaite pas afficher la requête dans le contenu du fichier :

    SQL> select * from MaTable where DATE_TRM>ADD_MONTHS(sysdate, -12);

    ID_BOBJECT|TRN_ID|CD_RE
    --------------|---------|--------
    178041| 253|BDI01

    J'ai essayé de mettre en off quelques variables sur les quelles j'avais des doutes mais ça n'a pas abouti
    Quelqu'un s'aura quelle variable exactement faut forcer pour éliminer cette ligne précisément?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    set echo off
    set ver off
    set heading on
    set pages 10000
    set linesize 10000
    set null null
    set trimspool on
    set colsep '|'
    spool MonFichierDeSortie\.csv
    select * from MaTable DATE_TRM>ADD_MONTHS(sysdate, -12);
    spool off;

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Date valide dans une requete SQL
    Par Seth77 dans le forum Général Dotnet
    Réponses: 17
    Dernier message: 13/06/2007, 13h36
  2. Réponses: 4
    Dernier message: 02/05/2007, 10h22
  3. date anniversaire dans 15 jours en SQL
    Par fa310428 dans le forum Langage SQL
    Réponses: 6
    Dernier message: 19/02/2007, 19h03
  4. Réponses: 3
    Dernier message: 11/01/2007, 15h44
  5. Réponses: 2
    Dernier message: 30/05/2006, 14h58

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