从存储过程中生成Excel文件,而无需在Oracle中创建目录



i具有生成excel文件的代码。我已经在本地计算机中测试了它的拳头,还在Loacl Machine数据库中的Oracle创建了目录。

,但是现在由于我需要在生产中使用此过程,因此由于安全原因我无法创建Oracle目录,因此在这种情况下,该过程将错误丢弃为

ORA-29280: invalid directory p  

我是否有其他方法可以在特定文件夹中生成文件而不在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:testTEST_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;

简单答案:

为了使用Oracle数据库访问文件系统,Oracle提供了DIRECTORY s。这样,Oracle还可以使自己和所有文件访问功能保持独立于操作系统。

可能有解决方法。例如,Oracle APEX提供了使最终用户从其Web-Browser中下载BLOB作为文件的方法,该文件已在数据库中生成。使用XDB,也可以将文件存储在数据库中的类似目录的系统中。但是,据我所知,这不使用物理硬盘。

您可以在数据库中编写一些Java并将其编译,但是在Oracle数据库中没有使用Java,我假设要访问文件系统,您也需要使用Oracle Directories。/p>

最新更新