当我运行代码中的这部分代码时,我得到一个错误(特别是在l_cnt := 1_cnt + 1
行由于某种原因而代码崩溃。我可能做错了什么?我正在尝试阅读证书文件。这是我到目前为止所拥有的:
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 :(得分:0)
我想出了错误!它正在读取的s对于阵列来说太大了。这是因为文件中包含空格。
v_certList.extend(1);
l_cnt := l_cnt + 1;
v_certList(l_cnt) := substr(s,
0,
10)
这为我修好了。