Hi all!

Je poste ma question ici même si c'est une question mixte Oracle/Unix(SunOS5.8)...
J'ai deux scripts: un sh et un sql. Je cherche à écrire avec le sql dans un fichier grâce à UTL_FILE:

extrait plsql:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
 BEGIN
/*do stuff*/
   file_handle := UTL_FILE.FOPEN(&1,time_stamp||'_stats_replication.txt','A'); 
/*do more stuff*/
EXCEPTION
/* gestion des erreurs*/
END;
La variable '&1' est définie dans le script unix de la manière suivante:

extrait sh:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
STAT_REPT=/index/nom_du_serveur/log
var=$STAT_REPT
 
sqlplus -s $IFSAPPLOGIN @$SQL_REPT/SPSTATREPL.sql $var >> $LOG_FILE
J'utilise cette méthode car je travaille avec plusieurs environnements et j'aimerai ne pas mettre en dur le chemin dans le script sql (ce qui bien évidemment marche très bien).

Mon soucis c'est que lorsque j'exécute le script unix je me mange l'erreur suivante:
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
old  44:     file_handle := UTL_FILE.FOPEN(&1,time_stamp||'_stats_replication.txt','A');
new  44:     file_handle := UTL_FILE.FOPEN(/index/di1ifs/dlk_data/log,time_stamp||'_stats_replication.txt','A');
    file_handle := UTL_FILE.FOPEN(/index/di1ifs/dlk_data/log,time_stamp||'_stats_replication.txt','A');
                                  *
ERROR at line 44:
ORA-06550: line 44, column 35:
PLS-00103: Encountered the symbol "/" when expecting one of the following:
( ) - + mod not null others <an identifier>
<a double-quoted delimited-identifier> <a bind variable>
table avg count current exists max min prior sql stddev sum
variance execute multiset the both leading trailing forall
year month DAY_ HOUR_ MINUTE_ second TIMEZONE_HOUR_
TIMEZONE_MINUTE_ time timestamp interval date
<a string literal with character set specification>
<a number> <a single-quoted SQL string>
Je suis bien conscient que le problème vient de la chemin qui contient des slash et qui n'est pas entre quotes donc j'ai déjà essayé ceci:

unix:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
x=$STAT_REPT
var="'"x"'"
sqlplus -s $IFSAPPLOGIN @$SQL_REPT/SPSTATREPL.sql $var >> $LOG_FILE
Ainsi que de concaténer des quotes dans la partie sql ou encore de faire un replace des slash en sql, cela ne marche pas non plus...

Quelqu'un a une idée?

[EDIT]: petit ajout avant d'avoir cette suggestion que j'ai essayé également, je ne dispose pas des droits dba donc les requêtes sur les tables: DBA_DIRECTORIES ou ALL_DIRECTORIES ne me sont pas autorisées...