GET_LINE ProcedureThis procedure reads text from the open file identified by the file handle and places the text in the output buffer parameter. Text is read up to, but not including, the line terminator, or up to the end of the file.If the line does not fit in the buffer, then a VALUE_ERROR exception is raised. If no text was read due to end of file, then the NO_DATA_FOUND exception is raised.Because the line terminator character is not read into the buffer, reading blank lines returns empty strings.使用 NO_DATA_FOUND 异常

解决方案 »

  1.   

    不是吧,还有没有其他方法啊NO_DATA_FOUND好像是用在SELECT检索数据时发生的吧
      

  2.   

    Supplied PLSql Package & Type Reference.PDF中这么写的
      

  3.   

    CREATE OR REPLACE PROCEDURE pReadFileTest  
      (FPATH IN STRING,FNAME IN STRING,MAX_NUM IN NUMBER) 
    IS 
      FILE_HANDLE UTL_FILE.FILE_TYPE;
      TEXT_BUFFER STRING(1000);
      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);
          DBMS_OUTPUT.PUT_LINE('LINE'||LINE_NUM||' : '||TEXT_BUFFER);
        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;
      

  4.   

    能给我一份Supplied PLSql Package & Type Reference.PDF吗
    [email protected]
    谢谢