How to create recursion in Mysql Procedures?
SET @@ GLOBAL .max_sp_recursion_depth = 255;
SET @@session.max_sp_recursion_depth = 255;
thread_stack = 64M
or
thread_stack = 128M
|
Example Factorial Program with Recursive Algorithm
DROP PROCEDURE IF EXISTS find_fact;
DROP PROCEDURE IF EXISTS factorial;
DELIMITER $$
CREATE PROCEDURE find_fact(IN n INT)
BEGIN
SET @@GLOBAL.max_sp_recursion_depth = 255;
SET @@session.max_sp_recursion_depth = 255;
CALL factorial(n,@fact);
SELECT @fact;
END
$$
DELIMITER $$
CREATE PROCEDURE factorial(IN n INT,OUT fact INT)
BEGIN
IF n = 1 THEN
SET fact := 1;
ELSE
CALL factorial(n-1,fact);
SET fact := n * fact;
END IF;
END
$$
|
Calling Procedure & Output
CALL find_fact(5);
![](data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFsAAAAsCAIAAACFc1O3AAAC60lEQVRoge2ZW3KbMBSGtZyu4DTeRncQ6LAXUGa8Ba8gJi/so4Dy4pnmnrRPSRwjhCTGfQBkrJAOHgOpOvrnf5B1Aeubg4QO6MvXbwurxWLbCFVEXgfSgJeaWB1EcsaPdxu2QVqv16psiWy3lsh72adGlyWi658kEnkIIYSQFw0zyYP08vKiyhMTaeatTz7y0Gy+6vf3V/NZ77499fz8rMrDExFCdreSM0AnAVE1lwEgwJdN0/ew513IGcBZOsS/rSxl+fTr94hEuJA0L96Z+OCGeZEEJ02IuGFdeeGosAEc7jqc+Gk1dtfBCYkPTd+AdN3oYEtZPjw+TU4kxU5AaIoBueE+ICcsaIoBcKINCV3kXNCc+ICccO9SHZ3NIxK6UBGpJ1MToaGrE0kxtEImeT//oYmUZXn/8DgmES4yynQn2PFJlmBA7pKyjBIf3CVlse/6CcsSDIBjyrIEAwI/qYcA4Fg1tS6l1xxnWZZ399MToRcOcpeULXdrRh0FMd0n0sw29gEBjmn11OwTqbEaQqTgYpPlHV46CDnnnU1xABD8yPJNlp83yMBx6so4UM/R6XLXB/y0+0YHWsry5vZ+RCKs4G8b+oHD0114OOcfdpvUUpbXN3djEmF8/ZYZZCnl1fXtiERyVryuNwZZSPnz6sYSmZAIMVOjnmvME+dcJ2LVESMfHpW3WyEkV+aCc1FwwQrOCs4Yz1mRs4IQIoRYmJkx6s6P/GVAzrg6BVTveZssrzbz9VtWrU+WiCViibRlieg6jkjkqbToaj5rTjVNncq8fkrKudZ0RGoCikjkNfOuU82RV5NYzWefyKQXEYSQKh8VI92p86pWARklw95ffYkoKMMTqStbRPbKU+sAIhWUoYmorzNmEkEIDUqk/bHKwKdGaRgiq/kM6XhMWlmPj5HWbou8aO9nswWZs/sOto6YoGn3GhM07fuICbLnGl2WiC5LRJcloutgIlKWlcuylJWlshRSCin/GyJ/AKm0qsxWl3HKAAAAAElFTkSuQmCC)
|