Sin ver las tablas es difícil saber si funciona o no, supongo que la select está bien, pero la función no devuelve nada y el código tiene algunos fallos. Aquí tienes un ejemplo completo con tablas y datos para probar que resuelve el problema que tú tienes de forma recursiva:
http://barcoavenus.blog.com/2011/01/...ecursivamente/
Espero sirva, saludos