Сильно подозреваю, что автору стоит ознакомится с азами SQL, в частности, с выборками из нескольких таблиц. Неужто задачи настолько нетривиальные, что базовые средства не помогают?
Хранимые процедуры не сильно облегчат возникшую у вас проблему, а если хостинг ещё и покупной, то про хранимки можно забыть. Я лично стараюсь избегать рекурсии следующим образом:
Допустим есть список категория следующего вида:
Id
parentId
Есть товар который имеет Id категории. Необходимо, по какой то выбранной категории выводить товары всех подкатегорий. Решение очевидно – рекурсия на стороне php или mysql. Это можно обойти если использовать дополнительную колонку в таблице категорий которая имеет в своём значении перечень всех подкатегорий по отдельной категории, то есть:
Id
parentId
childIds // 10,12,23,19
То есть необходимо однажды выполнить рекурсивный запрос для поиска всех Id подкатегория по конкретной категории и сохранить. Дальше просто. Изначальная проблема решается 2-мя запросами. Первым достаём значение childs, вторым получаем все товары
Select childsId from category where Id=10;
Select * from product where category id in (childsId);
MySQL. Stored Procedures.