Utl_File.Fopen例外

时间:2014-09-05 15:37:39

标签: sql oracle plsql oracle11g

我是pl-sql的新手,现在我正在编写一个使用Utl_File.Fopen函数的pl-sql程序(在Oracle11上),现在我对以下异常感到疯狂。

这是我的程序:

Procedure MyFirstProcedure
    is
    begin

        --somethings others

        c_filename := 'test';
        v_handle := Utl_File.Fopen (
            location    => c_locationScript,
            filename    => c_filenameScript,
            open_mode   => 'w',
            max_linesize => 256 );
    exception
      when others then  
      DBMS_OUTPUT.PUT_LINE('Exception: SQLCODE=' || SQLCODE || '  SQLERRM=' || SQLERRM);        
end MyFirstProcedure;

我得到以下异常:

Exception: SQLCODE=-29283  SQLERRM=ORA-29283: operazione file non valida

现在我执行以下操作:

CALL dbms_java.grant_permission( 'MYUSER', 'SYS:java.io.FilePermission', '/home/test', 'read' )
CALL dbms_java.grant_permission( 'MYUSER', 'SYS:java.io.FilePermission', '/home/test', 'write' )

在文件系统中,home和test都有一个rwx权限,但我继续得到异常。

关于如何解决的一些建议?

1 个答案:

答案 0 :(得分:0)

这是来自Oracle对错误代码的描述:

Cause:   An attempt was made to 
read from a file or directory that 
does not exist, or file or directory 
access was denied by the operating system.

UTL_FILE只能访问驻留在CREATE DIRECTORY命令映射的文件夹中的文件。由init.ora参数utl_file_dir交替映射。该文件夹及其中的文件必须可供服务器上的oracle帐户访问。

Dbms_java.grant ...仅适用于与存储的java程序有关的权限。