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

Oracle Discussion :

Exécution d'une requête à partir d'un shell


Sujet :

Oracle

  1. #1
    Membre à l'essai
    Inscrit en
    Avril 2004
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 31
    Points : 24
    Points
    24
    Par défaut Exécution d'une requête à partir d'un shell
    Bonjour,

    Je voudrait exécuter uen requêtre sql sur une base Oracle en sqlplus à partir d'un script Linux *.sh

    En général je place mes requêtes dans un fichier .SQL que je lance comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sqlplus login/pass @requete.SQL
    Mais ici je n'ai qu'une seule petite requete donc j'ai pas trop envie de faire un fichier à part entière.

    J'ai tenté ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sqlplus login/pass @select * from TABLE where (SYSDATE - DATE_MAJ_BATCH) > 20
    Mais ça ne marche pas ...

    Quelqu'un aurait-il la solution ??

    De plus J'aimerai remplacer le chiffre 20 de ma requête par une variable NBJOURS qui est dans mon script .sh.

    Peut-on faire un truc du genre dans une requete sql ?:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select * from TABLE where (SYSDATE - DATE_MAJ_BATCH) > $NBJOURS
    Si non comment pourrai-je faire pour que ce nombre de jour soit paramètrable ?

    Merci de vos réponses.

  2. #2
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 36
    Points : 32
    Points
    32
    Par défaut
    Bonjour,

    je vais répondre au dernier point : on peut passer des paramètres à un script sql. Ils sont reconnus avec le caractére & suivi du n° du paramétre (&1, &2, etc...).
    Pour vous cela donnerait pour le script requete.sql :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    select * from TABLE where (SYSDATE - DATE_MAJ_BATCH) > &1 ;
    bla bla bla
    exit;
    et la commande de lancement :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sqlplus login/pass @requete.SQL 20

  3. #3
    Membre expert

    Profil pro
    Inscrit en
    Février 2006
    Messages
    3 437
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 3 437
    Points : 3 597
    Points
    3 597
    Par défaut
    Pour exécuter une requête SQL sans créer de fichier SQL, une solution consiste à utiliser l'opération "<<" du shell qui permet de donner dans le fichier source les données de stdin.

    Exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    $ cat ts.sh
    #!/bin/sh
     
    sqlplus <user>/<passwors>@<instance> <<EOF
    select * from v\$version;
    EOF

    Ce qui donne:
    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
     
     
    SQL*Plus: Release 9.2.0.6.0 - Production on Me Mar 15 08:19:50 2006
     
    Copyright (c) 1982, 2002, Oracle Corporation.  All rights reserved.
     
     
    Connected to:
    Oracle9i Enterprise Edition Release 9.2.0.6.0 - 64bit Production
    JServer Release 9.2.0.6.0 - Production
     
    SQL>
    BANNER
    ----------------------------------------------------------------
    Oracle9i Enterprise Edition Release 9.2.0.6.0 - 64bit Production
    PL/SQL Release 9.2.0.6.0 - Production
    CORE    9.2.0.6.0       Production
    TNS for HPUX: Version 9.2.0.6.0 - Production
    NLSRTL Version 9.2.0.6.0 - Production
     
    SQL> Disconnected from Oracle9i Enterprise Edition Release 9.2.0.6.0 - 64bit Pro
    duction
    JServer Release 9.2.0.6.0 - Production
    Remarquez qu'il faut préfixer les '$' des commandes SQL par '\' pour éviter leur interprétation par le shell.

  4. #4
    Membre à l'essai
    Inscrit en
    Avril 2004
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 31
    Points : 24
    Points
    24
    Par défaut
    OK
    Je vous remercie.
    J'ai testé les 2 méthodes et elles marchent très bien.

    Je vais utilisé la seconde mais la première est interressante à connaître.

    Merci.

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

Discussions similaires

  1. Exécuter une requête à partir du code
    Par 30avril1989 dans le forum VBA Access
    Réponses: 4
    Dernier message: 01/06/2010, 16h23
  2. [SQL] exécuter une requête à partir d'un textarea
    Par mattyeux dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 18/01/2008, 15h02
  3. Réponses: 3
    Dernier message: 16/05/2007, 13h48
  4. Exécuter une requête à partir d'une variable
    Par Poussy-Puce dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 16/03/2006, 14h15
  5. Arrêt de l'exécution d'une requête MySQL dans DELPHI.
    Par joelmarc dans le forum Bases de données
    Réponses: 9
    Dernier message: 11/10/2004, 16h11

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