Yes, you can do this in direct SQL. No, you do not have to create a stored proc/function for this. You have to write a hierarchical query though, which (in Oracle) means you have to include the "connect by ... prior" clause and the "start with" clause, like this:
select mgr_name, emp_name
from emp
start with 'DAVID'
connect by prior emp_name = mgr_name;
You can (optionally) add this line:
order siblings by emp_name
(to put the employees for each manager in alphabetical order)
You can optionially start with a different manager's name if you only want the employees under that manager, and not all employees.