create table PERSON (
PERSON_KEY number(19),
FNAME varchar2(20 char),
LNAME varchar2(20 char)
)
ORA-00955: name is already used by an existing objectMore Details: https://docs.oracle.com/error-help/db/ora-00955
insert into PERSON
select '1','Jeremy','Mallard' from dual union
select '2','Marilyn','Foster' from dual
2 row(s) inserted.
commit
Statement processed.
create or replace type String4000List as table of varchar2(4000);
Type created.
declare
vPersonList String4000List;
vMallard number;
begin
vPersonList := String4000List();
select json_object (
'PERSON_KEY' value p.PERSON_KEY,
'FNAME' value min(p.FNAME),
'LNAME' value min(p.LNAME)
) PERSON
bulk collect into vPersonList
from PERSON p
group by p.PERSON_KEY;
for i in (
select column_value
from table(vPersonList)
)
loop
DBMS_OUTPUT.put_line (i.column_value);
end loop i;
select count(*)
into vMallard
from table(vPersonList) pl
-- where pl.column_value.LNAME = 'Mallard';
where pl.column_value like '%Mallard%';
DBMS_OUTPUT.put_line (vMallard);
end;
{"PERSON_KEY":1,"FNAME":"Jeremy","LNAME":"Mallard"}
{"PERSON_KEY":2,"FNAME":"Marilyn","LNAME":"Foster"}
1