Решение с CURSOR FOR LOOP и вложенным циклом FOR, в процедуре:
Таблица
create table nipc ( no, id, pid, count )
as
select 1 , '00033' , 'P4' , 1 from dual union all
select 2 , '00033' , 'P3' , 3 from dual union all
select 3 , '00033' , 'P2' , 2 from dual ;
Процедура
create or replace procedure nloops
is
begin
for r in ( select no, id, pid, count from nipc )
loop
for iter in 1 .. r.count
loop
dbms_output.put_line( r.no || ' | ' || r.id || ' | ' || r.pid ) ;
end loop ;
end loop ;
end ;
/
Тест с анонимным блоком
SQL> set serveroutput on
SQL> begin
2 nloops ;
3 end;
4 /
1 | 00033 | P4
2 | 00033 | P3
2 | 00033 | P3
2 | 00033 | P3
3 | 00033 | P2
3 | 00033 | P2
PL/SQL procedure successfully completed.
DBfiddle здесь.
Вы знаете, что вам следует "использовать SQL, когда это возможно", прежде чем писать какой-либо код PL / SQL (например, см. Ответ @ krokodilko).