declare
fd utl_file.file_type;
begin
fd := utl_file.fopen(:vdir, :vfile, 'A');
begin
utl_file.put_line(fd, 'sub2');
utl_file.put_line(fd, 'sub4');
utl_file.put_line(fd, 'sub5');
end;
utl_file.fclose(fd);
end;是很简单的代码,目标写入文件是个fifo文件。
执行后,光标在那一闪一闪,也不结束,也不报错,文件里也没被写入什么,怎么回事?
fd utl_file.file_type;
begin
fd := utl_file.fopen(:vdir, :vfile, 'A');
begin
utl_file.put_line(fd, 'sub2');
utl_file.put_line(fd, 'sub4');
utl_file.put_line(fd, 'sub5');
end;
utl_file.fclose(fd);
end;是很简单的代码,目标写入文件是个fifo文件。
执行后,光标在那一闪一闪,也不结束,也不报错,文件里也没被写入什么,怎么回事?
SQL> declare
2 fd utl_file.file_type;
3 begin
4 fd:=utl_file.fopen('TPATH','b.txt','a');
5 utl_file.put(fd,'sub2');
6 utl_file.put(fd,'sub3');
7 utl_file.fclose(fd);
8 end;
9 /PL/SQL 过程已成功完成。
chmod 777 /d01/sql;
--因/d01/sql目录的权限为drwxr-xr-x,其它用户没有写权限,而utl_file运行时的权限是oracle用户的权限,而不是当前登录用户的权限,utl_file不能写sql目录,所以需将
sql目录加上o+w权限create or replace directory d_output as '/d01/sql';
grant all on directory d_output to 当前用户名或者public;create or replace procedure first is
vfile utl_file.file_type;
begin
vfile := utl_file.fopen('D_OUTPUT','hello.txt','w', 32767);
utl_file.put_line(vfile, 'hello');
utl_file.put_line(vfile,'world');
utl_file.fflush(vfile);
utl_file.fclose(vfile);
end;
/
exec first;
欢迎有经验的来支援
管道处于写打开状态。当你把文件内容读出后,管道释放,然后才能正常终了。困扰了我两天,呵呵,希望对有需要的人有帮助吧