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

Linux Discussion :

Shell/SQL passage paramètre


Sujet :

Linux

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    SQLI
    Inscrit en
    Novembre 2011
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : SQLI
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2011
    Messages : 46
    Points : 39
    Points
    39
    Par défaut Shell/SQL passage paramètre
    Bonjour,

    Je suis entrain de créer un script shell/SQL, j'utilise pour ça des scripts SQL que j'appelle à chaque fois via le shell.
    J'ai réussi à passer des paramètres de Shell à SQL sans problème, par contre l'inverse j'ai pas pu le faire.
    Par exemple, je fais select count(*), le script shell m'affiche le resultat dans l'écran mais je ne sais pas d'où récupérer cette valeur pour l'utiliser par la suite dans mon programme Shell.

    Merci d'avance

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 587
    Points : 19 470
    Points
    19 470
    Par défaut
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    maVariable=$(mysql [] 'select […]')
    echo "$maVariable"

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    SQLI
    Inscrit en
    Novembre 2011
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : SQLI
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2011
    Messages : 46
    Points : 39
    Points
    39
    Par défaut
    J'ai déjà essayé avec ça mais ça ne marche pas car j'utilise une fonction pour accéder à la base et exécuter la requête, le voila le script qui fait tout mais j'arrive pas à renvoyer le resulat de la requête vers le Shell, autrement je ne sais pas où il sauvegarde le résultat.

    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
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
     
     
    #----------------------------------------
    # execSQLRequete
    #----------------------------------------
    execSQLRequete()
    {
    	REQUETE_FILENAME=$1
    	CHAINE=$2
     
    	#décalage des 2 premiers paramètres de la fonction pour ne prendre que les paramètres de la requête sql
    	shift && shift
    	param_sql="$@"
     
    	mkdir -p ${SQL_ROOT}/var/tmp/$CHAINE
    	mkdir -p ${SQL_ROOT}/load/$CHAINE/
    	cp ${SQL_ROOT}/$CHAINE/${REQUETE_FILENAME}.sql $SQL_ROOT/load/$CHAINE
     
     
    	cmde="/ord/fetchlib/ora_sql.ksh -I ${SQL_SERVICE_NAME} -A ${CHAINE} -M ${REQUETE_FILENAME} -R ${SQL_ROOT} -O '${param_sql}' -Sql -E"
    	echo $cmde
    	eval "$cmde"
    	status=$?
     
    	if [ $status -ne 0 ]
    	then
    			echo $RED_COLOR"`date '+%d/%m/%y %H:%M:%S'` : Erreur lors de l'execution de la requete SQL : $cmde\n"$INITIAL_COLOR
    			lResult=$lKO
    	else
    			echo $GREEN_COLOR"`date '+%d/%m/%y %H:%M:%S'` : Requete SQL executee sans erreur\n"$INITIAL_COLOR
    			lResult=$lOK
    	fi
     
     
     
    	return $lResult

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 587
    Points : 19 470
    Points
    19 470
    Par défaut
    eval, c'est mal !!! et ici, inutile :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $ var=abc
    $ cmde="echo $var"
    $ $cmde
    abc
    mais, cmde devrait être une fonction, plutôt qu'une variable.
    construire des commandes dans des variables, c'est mal aussi
    comme ça tu peux récupérer le résultat dans une variable :variable=$(cmde)quant à la gestion des erreurs , elle peut être affichée sur la sortie d'erreur pour ne pas interférer avec l'obtention des résultats de la requête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    cmde() {
       requête_sql "$@"
    }
    variable=$(cmde arguments) && echo ok >&2 || echo KO >&2)

    ?

Discussions similaires

  1. [Script SQL] Passage comme paramètre du nom de la base de données
    Par kha_yassine dans le forum SQL Procédural
    Réponses: 1
    Dernier message: 08/11/2013, 17h45
  2. [SQL] passage du résultat d'une liste en paramètre d'URL parmi d'autres
    Par sara21 dans le forum PHP & Base de données
    Réponses: 10
    Dernier message: 06/02/2008, 18h01
  3. Réponses: 2
    Dernier message: 26/12/2007, 12h04
  4. [C# - SQL] Passage d'un bit en paramètre d'une SP
    Par papouAlain dans le forum Windows Forms
    Réponses: 3
    Dernier message: 11/09/2006, 19h00
  5. [PL/SQL] : Passage de paramètres à une fonction
    Par dcollart dans le forum Oracle
    Réponses: 5
    Dernier message: 13/07/2006, 10h17

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