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 :

[ora 9]créer une commande qui fasse 1 select avec connection


Sujet :

Oracle

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    163
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 163
    Points : 80
    Points
    80
    Par défaut [ora 9]créer une commande qui fasse 1 select avec connection
    salut

    Je n'y connais pas grand chose en oracle mais on m'a demandé de faire un petit truc pour un client qui permettent de se connecter à sqlplus avec un login/pwd et qui fasse un select * sur une table.
    Ce petit truc ou "moulinette" comme on dit ici doit se lancer sous forme d'une commande dos que je dois créer.

    Pour l'instant ça ressemble à ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    sqlplus %login%/%pwd%
    select * from %file% where keyfield=%value%;
    et ça 'appelle export.cmd.
    Le truc, c'est que quand j'exécute export.cmd, ça se connecte mais ça ne fait pas le select.
    Il exécute la deuxième ligne lorsqu'il revient sur dos.

    Merci d'avance.

  2. #2
    Rédacteur

    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 320
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 320
    Points : 3 798
    Points
    3 798
    Par défaut
    Bonjour noinneh ,
    Je 'tinvite avant de poster à lire les: régles , et ainsi a mieux préciser ton contexte technique .

    1) Est ce normal de ne pas lui mettre de SID lors de la connexion ?
    2) Il te faut mettre un pause à la finde ton .CMD qui va te permettre ainsi d'empecher la fermeture de la fenêtre DOS aprés l'éxècution.

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    163
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 163
    Points : 80
    Points
    80
    Par défaut
    le contexte est le suivant: mon client dispose de nombreuse table sous oracle 9, il veut que je crée un .cmd qui permette l'extraction de toute les données d'une table.
    avant de lancer le .cmd, il fait les set login=, set pwd=, set file= etc...
    Je n'y connais pas grand chose mais il me semble que le contexte est posé, si il manque des trucs dites le moi bien sûr.

    Le SID, c'est le truc après login/password@SID?
    si il faut le mettre alors ce sera dejà un point de régler.

    pour ton 2) c'est quoi un pause à la fin du .cmd?

    Désolé pour ma meconnaissance mais sorti du C/C++ c'est la loose pour moi.

  4. #4
    Membre émérite Avatar de nuke_y
    Profil pro
    Indépendant en analyse de données
    Inscrit en
    Mai 2004
    Messages
    2 076
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Indépendant en analyse de données

    Informations forums :
    Inscription : Mai 2004
    Messages : 2 076
    Points : 2 370
    Points
    2 370
    Par défaut
    Je t'explique ce qui se passe :

    1ere ligne : une erreur survient car tu n'as pas précisé de SID
    2e ligne : une erreur survient car tu exécutes le select dans DOS et pas dans SQL*Plus
    enfin : la fenêtre se ferme car tu n'as pas mis de PAUSE.

    Merci de nous préciser ton environnement technique (version de la base, OS, etc.) pour que nous puissions te donner une solution.
    Il vaut mieux monopoliser son intelligence sur des bêtises que sa bêtise sur des choses intelligentes.

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    163
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 163
    Points : 80
    Points
    80
    Par défaut
    @nuke_y la connexion se fait puisque après la 1ere ligne je suis dans sqlplus seulement, pas moyen qu'il fasse la deuxième ligne du coup je fais un quit et là il me fait le select dans dos qui ne marche pas évidemment.

  6. #6
    Rédacteur

    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 320
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 320
    Points : 3 798
    Points
    3 798
    Par défaut
    et que donne tes lignes de commandes l'une aprés l'autre dans une fenêtre DOS :
    TU lance la connexion tu voit ce que cela donne ( tu fait même select sysdate from dual pour voir si tu es connecté )

    Tu lance ta commande , mais il me semble pas que tu puisse passer des paramétres définit dans DOS à Oracle :
    select * from %file% where keyfield=%value%;

  7. #7
    Membre émérite Avatar de nuke_y
    Profil pro
    Indépendant en analyse de données
    Inscrit en
    Mai 2004
    Messages
    2 076
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Indépendant en analyse de données

    Informations forums :
    Inscription : Mai 2004
    Messages : 2 076
    Points : 2 370
    Points
    2 370
    Par défaut
    ok, alors tu te connectes sans SID (pouquoi pas).

    Alors tu prends ta requête et tu la met dans un fichier run.sql (en local sur le poste où tu lances SQL*Plus) avec un ; à la fin et un EXIT à la ligne :
    et tu écris ton .bat comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    sqlplus %login%/%pwd% @run.sql
    PAUSE
    Ca va lancer SQL*Plus en lui demandant de lancer le script, exécuter le script, puis sortir de SQL*Plus (EXIT) et mettre le script en pause (PAUSE).
    Il vaut mieux monopoliser son intelligence sur des bêtises que sa bêtise sur des choses intelligentes.

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    163
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 163
    Points : 80
    Points
    80
    Par défaut
    jaouad select sysdate from dual semble fonctionner, ta remarque sur le passage des variable initialisées dans dos vers oracle est pertinente et moi je suis à l'ouest.
    nuke_y semble compléter ta réponse à ravir.
    je teste tout ça et vous tiens au courant.

  9. #9
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    163
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 163
    Points : 80
    Points
    80
    Par défaut
    ceci dit le problème des variables initialisé sous dos est toujours le même.
    select * from %file% where keyfield=%value%; ne fonctionnera pas puisque %file% et %value% seront ininterprétés.
    Y a t'il moyen de variabiliser la requête?

  10. #10
    Rédacteur

    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 320
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 320
    Points : 3 798
    Points
    3 798
    Par défaut
    Citation Envoyé par noinneh
    jaouad select sysdate from dual semble fonctionner, ta remarque sur le passage des variable initialisées dans dos vers oracle est pertinente et moi je suis à l'ouest.
    TOn probléme vient peut être de là. Ne t'inquiéte pas nous avons tous été au moins une fois perdu

  11. #11
    Membre émérite Avatar de nuke_y
    Profil pro
    Indépendant en analyse de données
    Inscrit en
    Mai 2004
    Messages
    2 076
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Indépendant en analyse de données

    Informations forums :
    Inscription : Mai 2004
    Messages : 2 076
    Points : 2 370
    Points
    2 370
    Par défaut
    Voila ça marche :
    le .bat :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Set login=%1
    Set mdp=%2
    set SID=%3
    set file=%4
    set value=%5
    sqlplus %login%/%mdp%@%SID% @run.sql %file% %value%
    PAUSE
    run.sql:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    select count(*) from &1 where keyfield=&2;
    EXIT
    Explications : tu appelles les .bat avec des paramètres, paramètres nommés %X dans le .bat. Ensuite ces paramètres sont mis dans login, mdp, etc.
    Puis on lance SQL*Plus en passant les 2 paramètres file et value au script SQL.

    Script SQL qui remplace &1 par la valeur de file et &2 par la valeur de value.

    Ensuite on sort de SQL*Plus et on met en pause

    Et voila !!

    EDIT :
    Si ta keyvalue est du type caractère il manque des '' :
    run.sql:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    select count(*) from &1 where keyfield='&2';
    EXIT
    Il vaut mieux monopoliser son intelligence sur des bêtises que sa bêtise sur des choses intelligentes.

  12. #12
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    163
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 163
    Points : 80
    Points
    80
    Par défaut
    merci nuke et jaouad pour vos explication.

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

Discussions similaires

  1. créer une commande qui combine \cite et \index ?
    Par Malo-net dans le forum Bibliographies - Index - Glossaires
    Réponses: 4
    Dernier message: 06/02/2015, 13h45
  2. une commande qui fait la selection ds un jtable
    Par djamila dans le forum Composants
    Réponses: 1
    Dernier message: 02/04/2007, 13h29
  3. [VBA-E]Créer une feuille qui contient du code
    Par Elstak dans le forum Macros et VBA Excel
    Réponses: 13
    Dernier message: 04/04/2006, 15h58
  4. Réponses: 12
    Dernier message: 23/03/2006, 14h13
  5. [MS-DOS] Une commande qui remette l’heure du PC à jour via I
    Par Furius dans le forum Autres Logiciels
    Réponses: 14
    Dernier message: 30/12/2005, 23h42

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