Содержание
Рекурсия в функциях MySQL
MySQL не допускает использования рекурсивных функций. Но это ограничение можно обойти, если использовать хранимые процедуры с VAR-параметрами для возврата значений.
// Модуль Procedure OnCreate; var x : integer; Begin x := (single stored2(20)); warning(tostr(x)); End; // Хранимая функция Function stored2(x:integer) : Integer; Begin (call stored1(result, x)); // result - это результат выполнения функции. End; // Хранимая процедура Procedure stored1(var result:integer; x:integer); Begin result := 0; // result - это первый параметр ХП, который "работает на выход". if x>1 then begin (call stored1(result, x-1)); result := result + 2; end; End;
В файл my.ini возможно потребуется добавить строчку "max_sp_recursion_depth=20". Где число обозначает максимально допустимую рекурсию.