Содержание
Рекурсия в функциях 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". Где число обозначает максимально допустимую рекурсию.
справка