UTL_FILE: 无法创建新文件
UTL_FILE: Could not create a new file
我在 create/open 文件的代码中使用此语句:如果不存在则创建它 yet/open 如果已经存在则创建它。
w_file_handle := utl_file.fopen ('SAUV_DIR',
'sauv_tab_tbrcs_params.txt' ,
'W') ;
该文件尚不存在,但无法创建。
我收到这个错误:
SQL> @MyScript.sql
declare
*
ERROR at line 1:
ORA-29283: invalid file operation
ORA-06512: at "SYS.UTL_FILE", line 536
ORA-29283: invalid file operation
ORA-06512: at line 14
如果文件不存在,有创建文件的想法吗?
您可以参考此代码在您的目录中创建一个文件。
我用下面的代码创建了一个 tt.sql 文件。我检查过我有一个工作目录“BDUMP”。
目录检查:
SQL> SELECT DIRECTORY_NAME , DIRECTORY_PATH FROM DBA_DIRECTORIES WHERE DIRECTORY_NAME = 'BDUMP';
DIRECTORY_NAME DIRECTORY_PATH
------------------------------ ---------------
BDUMP /home/fil_test/
更改目录权限。默认情况下它对其他人只有读取和执行权限。
terminal$ chmod 777 fil_test
块:
DECLARE
fHandle UTL_FILE.FILE_TYPE;
BEGIN
fHandle := UTL_FILE.FOPEN ('BDUMP', 'test_file', 'w');
UTL_FILE.PUT (fHandle, 'This is the first line');
UTL_FILE.PUT (fHandle, 'This is the second line');
UTL_FILE.PUT_LINE (fHandle, 'This is the third line');
UTL_FILE.FCLOSE (fHandle);
EXCEPTION
WHEN OTHERS
THEN
DBMS_OUTPUT.PUT_LINE (
'Exception: SQLCODE=' || SQLCODE || ' SQLERRM=' || SQLERRM);
RAISE;
END;
/
执行:
SQL> @tt.sql
PL/SQL procedure successfully completed.
我看到创建的文件:
terminal$ ls -lrt test_file*
-rw-r----- 1 oracle dba 68 Oct 24 14:49 test_file
我在 create/open 文件的代码中使用此语句:如果不存在则创建它 yet/open 如果已经存在则创建它。
w_file_handle := utl_file.fopen ('SAUV_DIR',
'sauv_tab_tbrcs_params.txt' ,
'W') ;
该文件尚不存在,但无法创建。
我收到这个错误:
SQL> @MyScript.sql
declare
*
ERROR at line 1:
ORA-29283: invalid file operation
ORA-06512: at "SYS.UTL_FILE", line 536
ORA-29283: invalid file operation
ORA-06512: at line 14
如果文件不存在,有创建文件的想法吗?
您可以参考此代码在您的目录中创建一个文件。
我用下面的代码创建了一个 tt.sql 文件。我检查过我有一个工作目录“BDUMP”。
目录检查:
SQL> SELECT DIRECTORY_NAME , DIRECTORY_PATH FROM DBA_DIRECTORIES WHERE DIRECTORY_NAME = 'BDUMP';
DIRECTORY_NAME DIRECTORY_PATH
------------------------------ ---------------
BDUMP /home/fil_test/
更改目录权限。默认情况下它对其他人只有读取和执行权限。
terminal$ chmod 777 fil_test
块:
DECLARE
fHandle UTL_FILE.FILE_TYPE;
BEGIN
fHandle := UTL_FILE.FOPEN ('BDUMP', 'test_file', 'w');
UTL_FILE.PUT (fHandle, 'This is the first line');
UTL_FILE.PUT (fHandle, 'This is the second line');
UTL_FILE.PUT_LINE (fHandle, 'This is the third line');
UTL_FILE.FCLOSE (fHandle);
EXCEPTION
WHEN OTHERS
THEN
DBMS_OUTPUT.PUT_LINE (
'Exception: SQLCODE=' || SQLCODE || ' SQLERRM=' || SQLERRM);
RAISE;
END;
/
执行:
SQL> @tt.sql
PL/SQL procedure successfully completed.
我看到创建的文件:
terminal$ ls -lrt test_file*
-rw-r----- 1 oracle dba 68 Oct 24 14:49 test_file