Oracle10g ORACLE APEX和UTL_文件-在安装数据库的服务器上创建文件

Oracle10g ORACLE APEX和UTL_文件-在安装数据库的服务器上创建文件,oracle10g,Oracle10g,我不确定我想做的事是否可行。我正在从APEX应用程序(或SQL workshop)调用一个过程。此过程应使用UTl_文件写入服务器。但是,它不起作用。我没有收到任何错误,所有适当的消息都会显示出来,更新也会完成。但是,不会创建输出文件。 当我在服务器上从SQL提示符运行该进程时,它会工作!由于APEX位于服务器上的数据库中,我本以为可以调用一个进程来写入服务器。 我已经做了所有必要的事情,比如创建一个目录并授予它必要的特权。我甚至尝试过使用错误的目录名,但我得到了预期的错误,因此正在确认该目录。

我不确定我想做的事是否可行。我正在从APEX应用程序(或SQL workshop)调用一个过程。此过程应使用UTl_文件写入服务器。但是,它不起作用。我没有收到任何错误,所有适当的消息都会显示出来,更新也会完成。但是,不会创建输出文件。 当我在服务器上从SQL提示符运行该进程时,它会工作!由于APEX位于服务器上的数据库中,我本以为可以调用一个进程来写入服务器。 我已经做了所有必要的事情,比如创建一个目录并授予它必要的特权。我甚至尝试过使用错误的目录名,但我得到了预期的错误,因此正在确认该目录。 我正在运行Oracle 10g版本10.2.0.3.0和APEX版本3.2.0.00.27。Oracle正在Redhat Linux上运行。所有适当的对象都在我的模式中。 这是可能的还是我需要找到另一种方法?我已授予该目录的读写权限 给APEX\u公共用户?我真的很感谢你在这方面的帮助,因为这真的令人沮丧! 我使用UTL_文件处理很多事情,所以我非常熟悉它的工作原理

我做了两件事

1) 我创建了一个指向本地C驱动器的目录对象,正如预期的那样,我收到了以下消息:

ORA-29283: invalid file operation
ORA-06512: at "SYS.UTL_FILE", line 475
ORA-29283: invalid file operation
2) 我在SQL研讨会上运行了以下代码:

declare

v_get boolean;
v_size number;
v_block binary_integer;


begin

utl_file.fgetattr('SQUID_TEST','settlement_dets_20000106.csv',
                  v_get,v_size,v_block);
if v_get then
dbms_output.put_line('It exists');
else
dbms_output.put_line('Shame!');
end if;
end;
结果如下:

Shame!

Statement processed.


0.00 seconds
我在服务器上运行了来自SQL plus的相同代码,结果是:

It exists

PL/SQL procedure successfully completed.

这是正确的,因为文件存在。这真是令人费解,我没有收到任何错误,我现在已将对Oracle目录的读写权限授予APEX_PUBLIC_用户和APEX_030200。

UTL_文件无法与数据库服务器上未安装的任何文件系统上的文件或目录交互。在数据库服务器上的目录上运行时,它听起来似乎正常。您是否尝试将代码编译为单独的架构,对该架构进行必要的授权,并从Apex调用它?这样一来,apex用户就不需要特权。UTL_文件无法与数据库服务器上未安装的任何文件系统上的文件或目录进行交互。在数据库服务器上的目录上运行时,它听起来似乎正常。您是否尝试将代码编译为单独的架构,对该架构进行必要的授权,并从Apex调用它?这样一来,apex用户就不需要特权了。