2016-07-21 2 views
0

패키지 내부에있는이 코드 부분을 실행할 때 어떤 이유로 든 l_cnt := 1_cnt + 1 행에 오류가 발생하고 코드가 충돌합니다. 무엇이 잘못 되었습니까? 나는 인증서 표시의 파일에 읽기 위해 노력하고 여기에 지금까지이 작업은 다음과 같습니다.plsql이 배열의 텍스트 파일을 읽는 중

v_certList arr_claims_t := arr_claims_t();         


    v_certLst VARCHAR2(2000); 

    f UTL_FILE.FILE_TYPE; 
    s VARCHAR2(200); 


-- used for looping 
l_cnt simple_integer := 0; 

    /*cop procedure*/ 
    PROCEDURE COP_DATALOAD_V2 AS 
    arr_claims arr_claims_t; 
    arr_sql arr_sql_t; 
    BEGIN 

    f := UTL_FILE.FOPEN('V_COP', 
         'certs_file.txt', 
         'R', 
         2500); 

    -- populata our v_certlist of arr_claims_t 

     loop 
     utl_file.get_line(f, s); 
     v_certList.extend(); 
     l_cnt := l_cnt+1; 
     v_certList(l_cnt) := s; 
    end loop; 
    exception 
    when no_data_found then 
     utl_file.fclose(f); 

내가 배열에 정상적으로 텍스트 파일을 제공 채워야하는 (그리고 나는 이것이 가장 좋은 방법이 아닙니다 이해하지만이 원하는 지금 당장해야 할 일)

+0

이것은 매우 긴 절차이므로 끝이 어딘가에 있습니다. 무슨 소리 야? 예외가 될 때까지 루프가 실행됩니다 .. 맞습니까? 오류는 다음과 같습니다 ORA-06512 – qaispak

+0

잘못된 위치에서 확장하고있는 것 같습니다. 아래를 확인하십시오 : 루프 utl_file.get_line (f, s); l_cnt : = l_cnt + 1; v_certList (l_cnt) : = s; v_certList.extend(); 끝 루프; – XING

+0

ORA-06512는 오류가 아니며 단지 런타임 오류를 나타냅니다. 실제로 무엇이 잘못되었는지 보려면 나머지 스택이 필요합니다. –

답변

0

오류가 발생했습니다! 해당 파일을 읽고있는 파일이 배열에 비해 너무 큽니다. 이는 파일의 빈 공간 s가 포함되었습니다.

v_certList.extend(1); 
     l_cnt := l_cnt + 1; 
     v_certList(l_cnt) := substr(s, 
            0, 
            10) 

이렇게 수정했습니다.

관련 문제