Похоже, вы это слишком усложнили. Почему бы вам не присоединиться непосредственно к etudiant
и employee
таблицам? Примерно так:
begin
for cur_r in (select e.name
from employee e join etudiant t on t.id = e.id
where t.name = 'Hichem'
)
loop
dbms_output.put_line(cur_r.name);
end loop;
end;
/
Возможно, вам даже не нужен цикл; или, если у вас есть несколько человек с именем, которое вы ищете (Hichem
в данном случае).
На ваш код:
- Вообще говоря, использовать курсор FOR l oop проще, чем делать все вручную (объявление переменной курсора, открытие курсора, выборка, выход из l oop, закрытие курсора) - если вы используете курсор FOR l oop , Oracle делает все это за вас
- нет необходимости явно объявлять
no_data_found
; это предопределенное исключение select * from employees
неправильно, так как - в PL / SQL - вы должны выбрать результат INTO
что-то. Если вы ожидаете более одной строки, рассмотрите возможность использования коллекции с bulk collect