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>