Получение ошибки при выборе 20 записей в первый раз в цикле FOR и отдыха в другое время в oracle - PullRequest
0 голосов
/ 18 декабря 2018

В Oracle всего 36 записей, которые я получаю, используя переменную PL / SQL type v_arr is varray(25) of varchar2(20).Внутри блока PL / SQL я использую 2 разных FOR loop для 2 разных операций.в первый раз я использую

For i in 1 .. v_arr.count(20) loop

и в следующий раз я использовал for i in v_arr.count(21) .. v_arr.count loop.

после компиляции, я получил ошибку в обоих условиях.Как решить эту проблему.Пожалуйста, помогите мне.

Ответы [ 2 ]

0 голосов
/ 18 декабря 2018

Основываясь на примере Барбароса, возможно, вы хотели что-то вроде этого:

declare
    type a_arr is table of varchar2(20);
    arr  a_arr := a_arr
         ( 'un1','un2','un3','un4','un5','un6','un7','un8','un9','un10'
         , 'un11','un12','un13','un14','un15','un16','un17','un18','un19','un20'
         , 'x1','x2','x3' );
begin  
    for i in 1..least(arr.count,20) loop
        dbms_output.put_line(arr(i));
    end loop;

    if arr.count > 20 then
        for i in 21..arr.count loop
            dbms_output.put_line(arr(i));
        end loop;
    end if;        
end;
0 голосов
/ 18 декабря 2018

Полагаю, вы хотите это

SQL> set serveroutput on;

SQL> declare
  type a_arr is varray(20) of varchar2(20);
  arr  a_arr:=a_arr('un1','un2','un3','un4','un5','un6','un7','un8','un9','un10',
                    'un11','un12','un13','un14','un15','un16','un17','un18','un19','un20');
begin  
 for i in 1..arr.count
  loop
    dbms_output.put_line(arr(i));
  end loop; 
end;  
...