2017-08-30 1 views
0

J'ai ci-dessous le code qui génère le fichier Excel. J'ai testé son wokring dans ma machine locale et j'ai également créé un répertoire dans Oracle dans ma base de données machine loacl.générer un fichier Excel à partir de la procédure stockée sans créer de répertoire dans Oracle

Mais maintenant que je dois utiliser cette procédure dans la production où, en raison des raisons de sécurité je ne peux pas créer oracle alors dans ce cas, la procédure est de lancer erreur

ORA-29280: invalid directory p 

est-il un autre moyen que je peux générer fichier dans un dossier spécifique sans créer de répertoire dans Oracle?

Create or replace PROCEDURE test_report IS  
    lv_dir   VARCHAR2(4000);  
    lv_data_file VARCHAR2(4000) := 'test_report' || '_' ||  
            to_char(SYSDATE, 'dd-Mon-yyyy') ||  
            '.csv';  
    lv_err_file VARCHAR2(4000) := 'test_report' || '_' ||  
            to_char(SYSDATE, 'dd-Mon-yyyy') ||  
            '.csv';  
    lv_dfile  utl_file.file_type;  
    lv_efile  utl_file.file_type;  
    ln_err_cnt  NUMBER;  
    ln_prc_cnt  NUMBER;   

BEGIN  

    lv_dir := 'C:\test\TEST_REPORT';  
    lv_dfile := utl_file.fopen(lv_dir, lv_data_file, 'W');  
    utl_file.fclose(lv_dfile);  
    utl_file.fclose(lv_efile);  



    EXCEPTION  
     WHEN OTHERS THEN  
      dbms_output.put_line(substr(sqlerrm,1,30));  
     END test_report; 

Répondre

1

Réponse simple: Pas.

Pour accéder au système de fichiers avec votre base de données Oracle, Oracle fournit les DIRECTORY s. De cette façon, Oracle conserve lui-même et toutes les fonctions d'accès aux fichiers indépendamment du système d'exploitation.

Il existe peut-être des solutions de contournement. Par exemple, Oracle APEX fournit des méthodes permettant à un utilisateur final de télécharger un BLOB en tant que fichier à partir de son navigateur Web qui a été généré dans la base de données. En utilisant XDB, il pourrait également être possible de stocker des fichiers dans un système de type répertoire dans la base de données. Mais, autant que je sache, cela n'utilise pas le disque dur physique. Vous pouvez écrire quelques lignes de Java et les compiler dans la base de données, mais sans avoir travaillé avec Java dans une base de données Oracle, je suppose que pour accéder au système de fichiers, vous devez également utiliser les répertoires Oracle.