各位老大:
   我写了一个读取TXT文本文档并写入表中的过程:
CREATE OR REPLACE PROCEDURE pReadFileTest
( fpath in varchar2,
     fname IN varchar2,
     max_num IN NUMBER )
IS
FILE_HANDLE UTL_FILE.FILE_TYPE;
TEXT_BUFFER varchar2(32000);
LINE_NUM NUMBER;
BEGIN
DBMS_OUTPUT.PUT_LINE('INPUT PATH='||FPATH);
DBMS_OUTPUT.PUT_LINE('INPUT FILENAME='||FNAME);
LINE_NUM :=0;
BEGIN
FILE_HANDLE := UTL_FILE.FOPEN(FPATH,FNAME,'R',MAX_NUM);
LOOP
LINE_NUM:= LINE_NUM + 1;
UTL_FILE.GET_LINE(FILE_HANDLE,TEXT_BUFFER);
insert into record_data values(line_num,text_buffer);
DBMS_OUTPUT.PUT_LINE('LINE'||LINE_NUM||' : '||TEXT_BUFFER);
commit;
END LOOP;EXCEPTION
WHEN NO_DATA_FOUND THEN
RETURN;
wHEN UTL_FILE.INVALID_PATH THEN
DBMS_OUTPUT.PUT_LINE('INVALID PATH');
WHEN UTL_FILE.INVALID_MODE THEN
DBMS_OUTPUT.PUT_LINE('INVALID MODE');
WHEN UTL_FILE.INVALID_FILEHANDLE THEN
DBMS_OUTPUT.PUT_LINE('INVALID FILEHANDLE');
WHEN UTL_FILE.INVALID_OPERATION THEN
DBMS_OUTPUT.PUT_LINE('INVALID OPERATION');
WHEN UTL_FILE.READ_ERROR THEN
DBMS_OUTPUT.PUT_LINE('READ ERROR');
WHEN UTL_FILE.WRITE_ERROR THEN
DBMS_OUTPUT.PUT_LINE('WRITE ERROR');
WHEN UTL_FILE.INTERNAL_ERROR THEN
DBMS_OUTPUT.PUT_LINE('INTERNAL ERROR');
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE(SQLERRM);
END;
EXCEPTION
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE('OTHER ERROR='||SQLERRM);
eND pReadFileTest;
在运行时出错:
ERROR 位于第 1 行:
ORA-20000: ORU-10027: buffer overflow, limit of 2000 bytes
ORA-06512: 在"SYS.DBMS_OUTPUT", line 34
ORA-06512: 在"SYS.DBMS_OUTPUT", line 118
ORA-06512: 在"SYS.DBMS_OUTPUT", line 81
ORA-06512: 在"LIJUN.PREADFILETEST", line 45
ORA-06512: 在line 1
我取1000行,却只能取52行,以后报错.
问题:
1\内存溢出,是程序的问题吗?怎么修改?
2\是oracle的设置问题吗?为什么?