Bonjour,

je galère sur un truc qui à mon avis doit être tout bête.

Quand je suis en root et que je tape successivement :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
[root@XXXXX log_jour]# su - userl --command="sqlplus form/form <<FIN
> select to_char(sysdate,'dd.mm.yyyy hh24:mm:ss') from dual;
> FIN"
je n'ai aucun souci :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 
SQL*Plus: Release 10.2.0.4.0 - Production on Thu Feb 10 16:29:37 2011
 
Copyright (c) 1982, 2007, Oracle.  All Rights Reserved.
 
 
Connecte a :
Oracle Database 10g Release 10.2.0.4.0 - 64bit Production
 
SQL>
TO_CHAR(SYSDATE,'DD
-------------------
10.02.2011 16:02:37
 
SQL> Deconnecte de Oracle Database 10g Release 10.2.0.4.0 - 64bit Production

En revanche quand je l'intègre dans un script (en environnement ksh), je n'arrive pas à obtenir le résultat de la requête, il bloque sur le login de connexion sqlplus, il me le redemande comment s'il s'était arrêté à la commande sqlplus. Du coup j'ai essayé un paquet de solutions mais pour le moment je n'ai pas trouvé la bonne. Il lui faut à priori des retours à la ligne dans le code, j'ai donc tenté cela sans succès :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
su - userl --command="sqlplus form/form <<FIN\r\n
select to_char(sysdate,'dd.mm.yyyy hh24:mm:ss') from dual;\r\n
FIN"
Le problème à mon sens se situe au niveau des guillemets, qu'en pensez-vous svp ?

NB : j'ai créé un autre script contenant ma commande sqlplus en totalité (sans les retours chariots). Quand j'appelle ce script avec un
Code : Sélectionner tout - Visualiser dans une fenêtre à part
su - userl -c monscript
ça fonctionne. Ce qui m'embête c'est que ça fait un script qui appelle un autre script et vu que je dois le faire régulièrement pour d'autres tâches, ça va m'en faire une sacré liste (et donc un sacré bordel).