CREATE OR REPLACE PROCEDURE MIGRATE_EDUCATION is
v_edu_id number;
BEGIN
for r in (select per_id,
coalesce(per_education, education()) per_education
from persons) loop
for e in (select column_value edu from table(r.per_education)) loop
begin
select edu_id into v_edu_id from educations
where edu_name = e.edu;
exception when no_data_found then
insert into educations (
edu_id,
edu_name
) values (
wifi_seq.nextval,
e.edu
) returning edu_id into v_edu_id;
-- v_edu_id := wifi_seq.currval;
end;
insert into person_x_education (
exp_id,
exp_per_id,
exp_edu_id
) values (
wifi_seq.nextval,
r.per_id,
v_edu_id
);
dbms_output.put_line(e.edu||' '||v_edu_id);
end loop;
end loop;
END MIGRATE_EDUCATION;