Précédent   Forum des professionnels en informatique > Systèmes > Linux
Linux Forum d'entraide sur le système Linux. Avant de poster -> Tutoriels Linux, F.A.Q Linux
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 23/11/2011, 10h40   #1
Invité régulier
 
Homme
SQLI
Inscription : novembre 2011
Messages : 42
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 : 42
Points : 9
Points : 9
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
waouni est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 23/11/2011, 12h35   #2
Expert Confirmé Sénior
 
Avatar de N_BaH
 
Inscription : février 2008
Messages : 2 071
Détails du profil
Informations forums :
Inscription : février 2008
Messages : 2 071
Points : 4 154
Points : 4 154
Bonjour,

Code :
1
2
maVariable=$(mysql [] 'select […]')
echo "$maVariable"
N_BaH est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 23/11/2011, 14h14   #3
Invité régulier
 
Homme
SQLI
Inscription : novembre 2011
Messages : 42
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 : 42
Points : 9
Points : 9
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 :
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
waouni est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 23/11/2011, 14h44   #4
Expert Confirmé Sénior
 
Avatar de N_BaH
 
Inscription : février 2008
Messages : 2 071
Détails du profil
Informations forums :
Inscription : février 2008
Messages : 2 071
Points : 4 154
Points : 4 154
eval, c'est mal !!! et ici, inutile :
Code :
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 :
1
2
3
4
cmde() {
   requête_sql "$@"
}
variable=$(cmde arguments) && echo ok >&2 || echo KO >&2)

?
N_BaH est déconnecté   Envoyer un message privé Réponse avec citation 10
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 14h34.


 
 
 
 
Partenaires

Hébergement Web