[Unix] Insérer code SQL dans un script Unix

[Résolu/Fermé]
Signaler
Messages postés
73
Date d'inscription
mercredi 20 décembre 2006
Statut
Membre
Dernière intervention
24 novembre 2010
-
Messages postés
73
Date d'inscription
mercredi 20 décembre 2006
Statut
Membre
Dernière intervention
24 novembre 2010
-
Bonjour à tous,
J'aimerais savoir si il était possible d'insérer des lignes de requètes sql à l'intérieur d'un shell unix.
J'ai un batch à traduire en shell unix et je ne sais pas si je peux transposer le passage sql tel quel.
Voici mon batch :

echo set heading off>>%SQL4OUT_PROC_ROOT%%SQL4OUT_FILE%%SQL_EXT%
echo set space 1 >>%SQL4OUT_PROC_ROOT%%SQL4OUT_FILE%%SQL_EXT%
echo set newpage none>>%SQL4OUT_PROC_ROOT%%SQL4OUT_FILE%%SQL_EXT%
echo set flush off>>%SQL4OUT_PROC_ROOT%%SQL4OUT_FILE%%SQL_EXT%
echo set feed off>>%SQL4OUT_PROC_ROOT%%SQL4OUT_FILE%%SQL_EXT%
echo set echo off>>%SQL4OUT_PROC_ROOT%%SQL4OUT_FILE%%SQL_EXT%
echo set verify off>>%SQL4OUT_PROC_ROOT%%SQL4OUT_FILE%%SQL_EXT%
echo set underline off>>%SQL4OUT_PROC_ROOT%%SQL4OUT_FILE%%SQL_EXT%
echo set linesize 100>>%SQL4OUT_PROC_ROOT%%SQL4OUT_FILE%%SQL_EXT%

echo spool %SQL4OUT_PROC_ROOT%%PAR4OUT_FILE%%PAR_EXT%>>%SQL4OUT_PROC_ROOT%%SQL4OUT_FILE%%SQL_EXT%

echo select rtrim(PARA_GRP)^|^|'.'^|^|rtrim(PARA_EXT)^|^|'.'^|^|PARA_PID^|^|'.'^|^|rtrim(PARA_TYP)^|^|'.'^|^|rtrim(NOM_FICH)^|^|'.'^|^|to_char(sysdate,'YMMDD')^|^|'000000.' from BATITF>>%SQL4OUT_PROC_ROOT%%SQL4OUT_FILE%%SQL_EXT%
echo where CODE = '%1'>>%SQL4OUT_PROC_ROOT%%SQL4OUT_FILE%%SQL_EXT%
echo and TRAI = 'N'>>%SQL4OUT_PROC_ROOT%%SQL4OUT_FILE%%SQL_EXT%
echo -- and TYPE = 3>>%SQL4OUT_PROC_ROOT%%SQL4OUT_FILE%%SQL_EXT%
echo order by DATETRAI, NOM_FICH;>>%SQL4OUT_PROC_ROOT%%SQL4OUT_FILE%%SQL_EXT%

echo spool off>>%SQL4OUT_PROC_ROOT%%SQL4OUT_FILE%%SQL_EXT%

echo update BATITF set TRAI = 'O', DATETRAI = sysdate where TRAI = 'N' and DATETRAI is null and CODE = '%1' ;>>%SQL4OUT_PROC_ROOT%%SQL4OUT_FILE%%SQL_EXT%

echo commit;>>%SQL4OUT_PROC_ROOT%%SQL4OUT_FILE%%SQL_EXT%

echo exit;>>%SQL4OUT_PROC_ROOT%%SQL4OUT_FILE%%SQL_EXT%

REM LOG
echo %SQL4OUT_PROC_ROOT%%SQL4OUT_FILE%%SQL_EXT%

Merci de votre aide.
Cordialement,

2 réponses

Messages postés
73
Date d'inscription
mercredi 20 décembre 2006
Statut
Membre
Dernière intervention
24 novembre 2010
2
Re-Bonjour,
J'ai trouvé la solution à mon problème ;-)))
Il suffit de mettre des " là où il faut et on arrive à faire générer un ficher sql à notre shell :

echo set heading off>>${SQL4OUT_DIR}sql4out.sql
echo set space 1 >>${SQL4OUT_DIR}sql4out.sql
echo set newpage none>>${SQL4OUT_DIR}sql4out.sql
echo set flush off>>${SQL4OUT_DIR}sql4out.sql
echo set feed off>>${SQL4OUT_DIR}sql4out.sql
echo set echo off>>${SQL4OUT_DIR}sql4out.sql
echo set verify off>>${SQL4OUT_DIR}sql4out.sql
echo set underline off>>${SQL4OUT_DIR}sql4out.sql
echo set linesize 100>>${SQL4OUT_DIR}sql4out.sql

echo spool ${SQL4OUT_DIR}par4out.par>>${SQL4OUT_DIR}sql4out.sql
echo "select rtrim(PARA_GRP)||'.'||rtrim(PARA_EXT)||'.'||PARA_PID||'.'||rtrim(PARA_TYP)||'.'||rtrim(NOM_FICH)||'.'||to_char(sysdate,'YMMDD')||'000000.' from BATITF">>${SQL4OUT_DIR}sql4out.sql
echo where CODE = '%1'>>${SQL4OUT_DIR}sql4out.sql
echo and TRAI = "'N'">>${SQL4OUT_DIR}sql4out.sql
echo "order by DATETRAI, NOM_FICH;">>${SQL4OUT_DIR}sql4out.sql

echo spool off>>${SQL4OUT_DIR}sql4out.sql

echo "update BATITF set TRAI = 'O', DATETRAI = sysdate where TRAI = 'N' and DATETRAI is null and CODE = '%1' ;">>${SQL4OUT_DIR}sql4out.sql
echo "commit;">>${SQL4OUT_DIR}sql4out.sql
echo "exit;">>${SQL4OUT_DIR}sql4out.sql

Voilou.
A+
Messages postés
73
Date d'inscription
mercredi 20 décembre 2006
Statut
Membre
Dernière intervention
24 novembre 2010
2
cf ci-dessus