我在sys用户下创建了如下目录:create or replace directory FILEPATH as 'D:\';
并且执行
declare
w_OutputFile UTL_FILE.FILE_TYPE;
begin w_OutputFile := utl_file.FOPEN('FILEPATH','12.txt','W');
UTL_FILE.PUT_LINE(w_OutputFile, 'abcdef');
UTL_FILE.FCLOSE(w_OutputFile);end;
为什么总是出现
ORA-06510;PL/SQL:用户定义例外发生,处理不能执行。
和 ORA-06512:"SYS.UTL_FILE"
错误呢?
我是在SYS用户下执行的,不会有权限的问题。百思不得其解!!??
并且执行
declare
w_OutputFile UTL_FILE.FILE_TYPE;
begin w_OutputFile := utl_file.FOPEN('FILEPATH','12.txt','W');
UTL_FILE.PUT_LINE(w_OutputFile, 'abcdef');
UTL_FILE.FCLOSE(w_OutputFile);end;
为什么总是出现
ORA-06510;PL/SQL:用户定义例外发生,处理不能执行。
和 ORA-06512:"SYS.UTL_FILE"
错误呢?
我是在SYS用户下执行的,不会有权限的问题。百思不得其解!!??
至于UTL_FILE_DIR参数是可以不用设置的。
file_handle utl_file.file_type;
v_line varchar2(3000);
begin
file_handle:=UTL_FILE.fopen('e:\orafile','misc_cust_all.txt','r');
loop
begin
UTL_FILE.get_line(file_handle,v_line);
Dbms_Output.put_line(line); exception
when no_data_found then
Dbms_Output.put_line('no_data_found');
exit;
end;
end loop;
Utl_File.fclose(file_handle);
exception
WHEN OTHERS THEN BEGIN
Dbms_Output.put_line('error');
end;
end p_operafile;
改为 Dbms_Output.put_line(v_line);
EXCEPTION
WHEN OTHERS THEN
dbms_output.put_line(sqlcode || '---' || sqlerrm );
输出:1---User-Defined Exception
有什么用呢?还是不能写文件呀!?
例如:
utl_file_dir=G:\oracle\temp //保存文本的路径为G:\oracle\temp
与之无关。
utl_file_dir在9i中已经不推荐使用,楼上各位不要在提到utl_file_dir的问题
http://download-west.oracle.com/docs/cd/B10501_01/appdev.920/a96612/u_file.htm#998262
将'FILEPATH'改写为 'd:\' 或 'c:\',都没有问题,在服务器的
d:盘或c:盘下,会有 '12.txt' 文件出现。你再试一下
begin
select type into v_company_type
from foretak f
where f.org_nummer = p_orgnr;
exception
when NO_DATA_FOUND then
p_block_txt := 'wrong org nr!';
p_score := -90;
UTL_FILE.put_line(v_fileHandle, 'result: failure!'); --这句是对的
UTL_FILE.put_line(v_fileHandle, p_block_txt ); --这句却不对,也报与楼主同样的错
end;
想不出错在哪里
我把p_block_txt 的类型从char改为varchar2就可以了