By using db<>fiddle, you agree to license everything you submit by Creative Commons CC0.
create table serv_item (serv_item_id number, status varchar2(1));
create or replace type t45 is table of number;
insert into serv_item select level , chr(64 + level) from dual connect by level <= 5;
5 rows affected
create or replace procedure p_aa(serv in t45)
is
aa serv_item%rowtype;
begin
for i in 1..serv.count()
loop
select a.* into aa from serv_item a where a.serv_item_id = serv(i);
dbms_output.put_line('Serv item '||aa.serv_item_id||' '||'status '||aa.status);
end loop;
end;
/
declare
cursor c1 is select serv_item_id from serv_item;
n number:=0;
v t45 := t45();
x number;
begin
open c1;
loop
fetch c1 into x;
exit when c1%notfound;
n:=n+1;
v.extend();
v(n) := x;
end loop;
close c1;
p_aa(v);
end;
/
1 rows affected
dbms_output:
Serv item 1 status A
Serv item 2 status B
Serv item 3 status C
Serv item 4 status D
Serv item 5 status E
declare
v t45;
begin
select serv_item_id
bulk collect into v
from serv_item;
p_aa(v);
end;
/
1 rows affected
dbms_output:
Serv item 1 status A
Serv item 2 status B
Serv item 3 status C
Serv item 4 status D
Serv item 5 status E