KSH - SQL plus : : Not Found - Shell/Batch - Programmation
Marsh Posté le 29-12-2005 à 16:30:46
Salut
J'ai trouvé la solution. En fait, le shell essayait d'interpreter le resultat de mon sql comme une commande. J'ai donc viré les "`" et rediriger le tout dans un fichier (en début de script.
Mon code ressemble à present à ceci:
Code :
|
Marsh Posté le 29-12-2005 à 16:52:07
En fait, les backquotes ( car. ` ) retournent au shell le texte imprimé sur le flux de sortie standard à l'exécution. Ce qui signifie qu'il essaie d'exécuter ce texte.
Exemple :
`echo find` |
t'imprimera l'aide de la commande "find" qui s'est exécutée.
D'où ton erreur
Marsh Posté le 29-12-2005 à 11:03:48
Bonjour à tous
Je suis nouvelle en programmation shell et j'ai un problème incompréhensible pour moi.
Voilà, je programme sous ksh et j'aimerai exécuter un script SQL sur une bas ORACLE 8.1.7 (je ne peux pas utiliser du PL/SQL).
Mon scipt ressemble à ceci:
`sqlplus -s /nolog << EOF
connect ${SC_ALIAS_LOGIN}/${SC_ALIAS_PWD}@${DB_BASE}
SET ECHO OFF
SET FEEDBACK OFF
SET HEADING OFF
SET COLSEP ';'
${cmd}
exit
EOF` | tr -d " " > ${REP}/${DB_USER}.${table}${Ver_Chg}.lst
lorsque je l'exécute, j'ai l'erreur SQL*Plus:: not found
Et pourtant, si je modifie le script ainsi
`sqlplus -s /nolog << EOF > ${REP}/${DB_USER}.${table}${Ver_Chg}.lst
connect ${SC_ALIAS_LOGIN}/${SC_ALIAS_PWD}@${DB_BASE}
SET ECHO OFF
SET FEEDBACK OFF
SET HEADING OFF
SET COLSEP ';'
${cmd}
exit
EOF`
Là il s'exécute et j'ai des résultats.
Je ne peux utiliser cette deuxième solution car j'ai beaucoup d'espace dans certaine tables et elle dépasse 2Go, ce qui fait planter mon script.
J'ai vérifié le PATH et le ORACLE_HOME et j'ai testé le chargement de l'environnement ORACLE dans mon script avec les instructions
export PATH=$PATHusr/bin/X11usr/local/bin
umask=022
export ORACLE_SID=${1}
export ORAENV_ASK=NO
. oraenv
mais le comportement est toujours aussi bizarre
Je suis preneuse pour toute piste qui m'aiderai à avancer.
Merci