résultat de requête sqlplus dans variable shell
Bonjour,
je souhaiterais récupérer le résultat d'une requête sqlplus dans une variable shell.
Voici ce que je tape :
test=`sqlplus -S "login/mdp" <<END
> set head off
> set feedback off
> set newpage none
> ALTER SESSION SET NLS_DATE_FORMAT = 'hh24:mi:ss dd.mm.yyyy';
> select "\$CHAMP1",CHAMP2 FROM SCHEME.TABLE WHERE "\$CHAMP1" = hextoraw('48429F50FF7FC6');
> END`
il est à noter que $CHAMP1 n'est pas une variable shell mais bel et bien le nom du champs recherché (et je ne peux rien y changer :? )
Par défaut je suis en sh et voici le résultat que j'obtiens:
sh[7]: COID: Parameter not set.
Quand je passe en ksh j'obtiens:
echo $test
ERROR: ORA-01741: illegal zero-length identifier
Dans la mesure du possible j'aimerais rester en sh. Pouvez-vous m'aider à faire marcher cette commande ?
Merci d'avance pour votre aide, je commence à m'arracher les cheveux ! :lol:
A+
LKX
Une façon pour recuperer ta variable
Bonsoir,
Tout d’abords
Créer le script sql (sous unix) dont le nom par exemple est get_resultat_requete.sql voici son contenu :
set head off
set feed off
spool get_resultat_requete.sql
SELECT variable1 --- (La variable que vous voulez recuperez)
FROM NOM_TABLE
WHERE colonne= ();
spool off
exit
Dans Le shell principal :
Créer une function au debut du shell principal :
Nom_Fonction ()
{
sqlplus -s $USERNAME/$PASSWORD@$INSTANCE <<EOF
@get_resultat_requete.sql
EOF
head – N get_resultat_requete.sql | tail -1 | read variable1
--- ( N est le Nombre de lignes)
}
----- au milieu de shell principal appellez la function Nom_Fonction automatiquement la variable variable1 sera initialisée
Bon Courage