在存储过程中生成excel文件,而不在oracle中创build目录

我有下面的代码生成excel文件。 我已经在我的本地机器上testing过它的伙计,我也在我的loacl机器数据库中创build了oracle目录。

但现在,因为我需要在生产中使用这个过程,由于安全原因,我不能创buildoracle目录,那么在这种情况下,该过程是抛出错误

ORA-29280: invalid directory p 

有什么其他的方式,我可以在特定的文件夹中生成文件,而无需在oracle中创build目录?

  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; 

简单的答案:

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

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

你可以编写一些Java代码并在数据库中进行编译,但是在Oracle数据库中没有使用Java,我假定为了访问文件系统,你还需要使用Oracle目录。