You can simply use recursive queries:
Code:
WITH RECURSIVE hierarchy
AS ( SELECT ...
FROM ...
WHERE ...
UNION ALL
SELECT ...
FROM ..., hierarchy
WHERE ... )
SELECT ...
FROM hierarchy
WHERE ...
Since SQL is a relational programming language, I wouldn't use stored procedures for such a task.