我有以下代码生成excel文件。我已经在我的本地机器上测试了它的wokring,我还在我的loacl机器数据库中在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:\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;
答案 0 :(得分:1)
简单回答:否。
为了使用Oracle数据库访问文件系统,Oracle提供了DIRECTORY
。这样,Oracle还可以保持自身和所有文件访问功能独立于操作系统。
可能有解决方法。例如,Oracle APEX
提供了一些方法,使最终用户能够从他的Web浏览器中下载BLOB
作为文件,该文件已在数据库中生成。使用XDB
,还可以将文件存储在数据库中类似目录的系统中。但是,据我所知,这不使用物理硬盘。
您可以编写一些Java行并在数据库中编译它,但是在Oracle数据库中没有使用Java,我假设为了访问文件系统,您还需要使用Oracle目录。 / p>