IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Oracle Discussion :

[8i] Passer un chemin UNIX dans un script PL/SQL


Sujet :

Oracle

  1. #1
    Membre à l'essai
    Homme Profil pro
    Consultant ERP
    Inscrit en
    Janvier 2012
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant ERP
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2012
    Messages : 8
    Points : 12
    Points
    12
    Par défaut [8i] Passer un chemin UNIX dans un script PL/SQL
    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...

  2. #2
    Expert éminent sénior Avatar de mnitu
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    5 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2007
    Messages : 5 611
    Points : 11 252
    Points
    11 252
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    file_handle := UTL_FILE.FOPEN('&1',time_stamp||'_stats_replication.txt','A');

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. chemin Linux dans un script
    Par STELLLA dans le forum PL/SQL
    Réponses: 1
    Dernier message: 22/09/2010, 17h01
  2. Réponses: 2
    Dernier message: 19/07/2009, 04h08
  3. Réponses: 1
    Dernier message: 16/10/2008, 11h40
  4. Réponses: 2
    Dernier message: 13/08/2007, 21h15
  5. Réponses: 2
    Dernier message: 16/01/2006, 15h07

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo