Problème shell avec code retour sql

Fermé
fredbat - 14 sept. 2007 à 11:01
 waga - 19 févr. 2008 à 12:13
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
A voir également:

3 réponses

dubcek Messages postés 18755 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 14 novembre 2024 5 621
14 sept. 2007 à 12:21
hi
il faut faire un test numérique : if [ $RC -ne 0 ] ; then
1
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.
1
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 897
14 sept. 2007 à 12:22
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...

;-))
-1