Problème shell avec code retour sql
fredbat
-
waga -
waga -
Bonjour
je dois faire un script shell qui fait acces à une base oracle via sqlplus
comme suit
DSN=${BDB}_rept/${BDB}_rept@${ORACLE_SID}
SQL="sqlplus -s ${DSN}"
$SQL @/dimdata/scripts/recherche_baseline.sql "STIME_SO_67" > /tmp/recherche_baseline.out2
RC=$?
echo "RC= $RC"
if [ $RC != "0" ] ; then
echo "Erreur lors de l'exécution de la procédure SQL recherche_baseline NOM_DM : "
fi
mon sql est le suivant
SET VERIFY OFF FEEDBACK OFF TERMOUT OFF ECHO OFF LINESIZE 500 PAGESIZE 0
SET EMBEDDED OFF HEADING OFF
SET TERMOUT ON
WHENEVER SQLERROR EXIT SQL.SQLCODE
SELECT PCMS_ATTRIBUTES_CHDOC.BASELINE||' '
FROM TEST.PCMS_ATTRIBUTES_CHDOC PCMS_ATTRIBUTES_CHDOC, TEST.PCMS_CHDOC_DATA PCMS_CHDOC_DATA
WHERE PCMS_ATTRIBUTES_CHDOC.CH_UID = PCMS_CHDOC_DATA.CH_UID AND ((PCMS_CHDOC_DATA.CH_DOC_ID='&1'))
;
exit SQL.SQLCODE;
mais quand je test mon code retour RC est toujours égal à 0
pourriez vous m'aider
merci d'avance
je dois faire un script shell qui fait acces à une base oracle via sqlplus
comme suit
DSN=${BDB}_rept/${BDB}_rept@${ORACLE_SID}
SQL="sqlplus -s ${DSN}"
$SQL @/dimdata/scripts/recherche_baseline.sql "STIME_SO_67" > /tmp/recherche_baseline.out2
RC=$?
echo "RC= $RC"
if [ $RC != "0" ] ; then
echo "Erreur lors de l'exécution de la procédure SQL recherche_baseline NOM_DM : "
fi
mon sql est le suivant
SET VERIFY OFF FEEDBACK OFF TERMOUT OFF ECHO OFF LINESIZE 500 PAGESIZE 0
SET EMBEDDED OFF HEADING OFF
SET TERMOUT ON
WHENEVER SQLERROR EXIT SQL.SQLCODE
SELECT PCMS_ATTRIBUTES_CHDOC.BASELINE||' '
FROM TEST.PCMS_ATTRIBUTES_CHDOC PCMS_ATTRIBUTES_CHDOC, TEST.PCMS_CHDOC_DATA PCMS_CHDOC_DATA
WHERE PCMS_ATTRIBUTES_CHDOC.CH_UID = PCMS_CHDOC_DATA.CH_UID AND ((PCMS_CHDOC_DATA.CH_DOC_ID='&1'))
;
exit SQL.SQLCODE;
mais quand je test mon code retour RC est toujours égal à 0
pourriez vous m'aider
merci d'avance
Configuration: unix aix oracle 9
3 réponses
-
hi
il faut faire un test numérique : if [ $RC -ne 0 ] ; then -
Bonjour,
En fait le sqlplus s'execute bien donc le resultat est 0.
Je pense que le résultat sera différent de 0 si tu as une erreur de syntaxe dans ton script PL SQL, et donc que tes commandes oracle ne sont pas correcte. -
Salut,
Question c*n...
Est-ce que la commande seule génère des erreurs au moins ?
Sinon une piste peut être avec cette dernière ligne de ta requête SQL :
exit SQL.SQLCODE;
Essaie de remplacer le SQLSQLCODE par un un chiffre quelconque (enfin si possible, je connais rien à SQL) et re-teste ton script...
;-))