Чтобы избежать проблемы too_many_rows, вы можете использовать курсор, что-то вроде этого (я не проверял это, но по этим направлениям)
DECLARE
v_department egpl_department.department_name%type;
cursor c_dept IS
select department_name
into v_department
from egpl_department
where department_id in (select department_id from egpl_casemgmt_activity)
order by department_name;
BEGIN
OPEN c_dept;
FETCH c_dept INTO v_department;
CLOSE c_dept;
-- do something with v_department
END;
Это поместит первое найденное в таблице значение в v_department. Используйте предложение ORDER BY, чтобы убедиться, что возвращаемая строка будет той, которая вам требуется, при условии, что существует вероятность 2 разных значений.