Я сделал вложенную таблицу, в которой храню имена и фамилии. Одно имя имеет две фамилии.операции вложенных таблиц
CREATE OR REPLACE TYPE list_surname AS TABLE OF VARCHAR2(10);
/
CREATE TABLE person (name varchar2(10),
surname list_surname)
NESTED TABLE surname STORE AS list;
/
INSERT INTO person VALUES('Olsen', list_surname('Arthur', 'Baxter'));
INSERT INTO person VALUES('Jensen', list_surname('Barney', 'Louis'));
INSERT INTO person VALUES('Andersen', list_surname('Chase', 'Mason'));
/
Теперь я хочу сделать анонимный блок для подсчета и отображения, сколько людей имеют хотя бы одну фамилию, которая содержит букву «и», и если этот человек имеет букву «и» на его фамилию, то я хочу напечатайте этого человека (имя + фамилия). Это то, что я сделал до сих пор:
set serveroutput on
DECLARE
v_var VARCHAR2(32);
v_nr NUMBER(30);
cursor c1 (var VARCHAR2) is
select regexp_count(var,'[u]',1,'i') from dual;
BEGIN
FOR i IN person.FIRST .. person.LAST LOOP
v_nr := 0;
open c1(person.list_surname);
loop
fetch c1 into v_nr;
exit when c1%notfound;
IF v_nr > 0 THEN
DBMS_OUTPUT.put_line(person);
end if;
end loop;
close c1;
end loop;
END;
/
Я не очень хорошо работает с вложенными таблицами, потому что это мой первый раз. Любые предложения приветствуются. Благодаря!