drop table if exists t3; create table t3 ( f bigint unsigned not null ); drop procedure if exists fib; create procedure fib(n int unsigned) begin if n > 1 then begin declare x, y bigint unsigned; declare c cursor for select f from t3 order by f desc limit 2; open c; fetch c into y; fetch c into x; close c; insert into t3 values (x+y); call fib(n-1); end; end if; end| set @@max_sp_recursion_depth= 20| insert into t3 values (0), (1)| call fib(3)| select * from t3 order by f asc| f 0 1 1 2 truncate table t3| insert into t3 values (0), (1)| call fib(10)| select * from t3 order by f asc| f 0 1 1 2 3 5 8 13 21 34 55 drop table t3| drop procedure fib| set @@max_sp_recursion_depth= 0|