2016-07-21 13 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); 

Iが配列のsuccesfulyテキストファイルを与えられた(と私はこれを理解移入するにしたいことはベストプラクティスではありませんが、これはあります

+0

これはso..the終わりがどこかに終わり近くにある非常に長い手順です。どういう意味ですか?ループは例外なく実行されます..そうですか?エラーは: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) 

これは私のために修正されました。

関連する問題