You can do it in plain SQL (PL/SQL not really required). Correction (if any) to the following query would be minimal and you should be able to handle it yourself!
ROW_NUMBER() is one of the analytic functions (like sum(..) over, rank() over, dense_rank() over etc) and not too difficult - the time invested in learning is well worth the effort.
select case slno when 1 then name else '' end name, case slno when 1 then to_char(age) else '' end age, marks
select name, age, marks, emp_id, row_number() over (partition by emp_id order by mark_id) slno
select employeename name, a.id emp_id, age, b.id mark_id, marks
from employeemaster a, employeemarks b
where a.id = employeemasterid
order by emp_id, slno