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 valeur sql - dans un script batch


Sujet :

SQL Oracle

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    56
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2005
    Messages : 56
    Points : 49
    Points
    49
    Par défaut récupérer valeur sql - dans un script batch
    Bonjour,

    Tout d'abord, je précise que je travaille avec comme SGBD oracle8i, le client sqlplus, dos sous winxp (pour script batch).

    Est-ce possible de récupérer une valeur d'une db (instruction select) et la placer ds une variable d'environnement pour l'utiliser ds un script batch?

    En gros, je voudrais

    initialiser une variable hote (sqlplus) et la passer à mon script batch.
    Je pensais à la commande HOST SET nomvariable=:varHote ds le code sql.
    Mais, la commande set permet de créer une variable d'environnement propre à une session de terminal. Le script bat en lancant sqlplus crée une nouvelle
    session non?

    ou

    modifier la valeur d'un paramètre (nomBd) passé à mon script lors de l'appel
    de sqlplus

    exemple ds script .bat
    ----------------------
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    set nomBd=
    sqlplus system/manager@sidBD @testsam.sql %nomBd%
    echo %nomBd% => afficherait la valeur modifié ds le script sql
    Quelqu'un aurait-il déjà fait ce type d'opération? Est-ce possible?

    Sam

  2. #2
    Expert confirmé
    Avatar de laurentschneider
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2005
    Messages
    2 944
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2005
    Messages : 2 944
    Points : 4 926
    Points
    4 926
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Y:\>type testsam.sql
    set pages 0 feedb off
    select name from v$database;
    quit
    Y:\>for /f %f in ('sqlplus -s scott/tiger@db01 @testsam') do set nomBd=%f
    Y:\>set nomBd
    nomBd=DB01

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    56
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2005
    Messages : 56
    Points : 49
    Points
    49
    Par défaut
    Merci bien pour cette solution, il reste une petite modif à apporter je pense.
    J'ai remplacé les occurences des simples pourcents par des doubles pourcents.

    Avec @echo ON, voici l'affichage de l'exécution du script:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    >for /F %%a in ('sqlplus -s system/manager@sidBd @testsam') DO SET nomBd=%%a
    >SET nomBd=sidBd
    >SET nomBd=EntrÚe
    >SET nomBd
    nomBd=EntrÚe
    Je suppose que "Entrée" correspond à un passage à la ligne, bizarre
    étant donné le feedb off.
    Il y aurait deux itérations de la boucle for. Je vais essayé de rajouter un test
    pour ne pas effectuer le SET lors de la deuxième itération du for.

  4. #4
    Expert confirmé
    Avatar de laurentschneider
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2005
    Messages
    2 944
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2005
    Messages : 2 944
    Points : 4 926
    Points
    4 926
    Par défaut
    quel est le contenu de ton script? as-tu essayé avec mon script?

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    56
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2005
    Messages : 56
    Points : 49
    Points
    49
    Par défaut
    Oui j'ai testé tes scripts.
    J'ai ajouté les double pourcents c'est tout.

    fichier testsam.sql

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    set pages 0 feedb off
    select name from v$database;
    quit
    script batch
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    for /f %%f in ('sqlplus -s system/manager@sid @testsam') do set nomBd=%%f
    set nomBd
    PAUSE

  6. #6
    Expert confirmé
    Avatar de laurentschneider
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2005
    Messages
    2 944
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2005
    Messages : 2 944
    Points : 4 926
    Points
    4 926
    Par défaut
    Citation Envoyé par persam
    Oui j'ai testé tes scripts.
    J'ai ajouté les double pourcents c'est tout.
    pourquoi?

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    56
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2005
    Messages : 56
    Points : 49
    Points
    49
    Par défaut
    L'aide du dos winxp précise:

    Pour utiliser la commande FOR dans un programme de commandes, spécifiez
    %%variable au lieu de %variable. Pas plus d'explications.

    L'exécution de sqlplus -s system/manager@sid @testsam renvoie comme deuxième ligne Entrée limitée à 4 caractères d'ou le problème.
    Je regarde au niveau de l'option SET de sqlplus.

Discussions similaires

  1. Execution script.sql dans un fichier batch
    Par titou62 dans le forum Administration
    Réponses: 2
    Dernier message: 09/09/2010, 13h04
  2. [MySQL] Requête sql dans un script php
    Par ceaser dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 25/05/2007, 14h01
  3. Récupérer une variable dans un script javascript
    Par Finelarme dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 28/10/2006, 18h41
  4. [SQL] Traitement de plusieurs requêtes .SQL dans un script PHP?
    Par M4x dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 19/03/2006, 19h59
  5. [MySQL] Problème de requêtes SQL dans un script
    Par Nefret dans le forum PHP & Base de données
    Réponses: 8
    Dernier message: 08/09/2005, 15h08

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