mirror of
				https://github.com/MariaDB/server.git
				synced 2025-10-31 15:50:51 +03:00 
			
		
		
		
	
		
			
				
	
	
		
			34 lines
		
	
	
		
			656 B
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			34 lines
		
	
	
		
			656 B
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| 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;
 | |
| insert into t3 values (x+y);
 | |
| call fib(n-1);
 | |
| ## Close the cursor AFTER the recursion to ensure that the stack
 | |
| ## frame is somewhat intact.
 | |
| close c;
 | |
| end;
 | |
| end if;
 | |
| end|
 | |
| set @@max_sp_recursion_depth= 20|
 | |
| insert into t3 values (0), (1)|
 | |
| call fib(4)|
 | |
| select * from t3 order by f asc|
 | |
| f
 | |
| 0
 | |
| 1
 | |
| 1
 | |
| 2
 | |
| 3
 | |
| drop table t3|
 | |
| drop procedure fib|
 | |
| set @@max_sp_recursion_depth= 0|
 |