Rob*_*cks 6 mysql recursion stored-procedures user-defined-functions stored-functions
我写了一个存储的FUNCTION,递归地调用自己.
但是,当我在查询中运行它时,我得到了这个无耻的错误:
错误:1424 SQLSTATE:HY000(ER_SP_NO_RECURSION)
消息:递归存储函数和触发器不允许的.
"不允许"?
对.为什么我们不只是禁用WHILE循环,而我们在它呢?
我可以以任何方式启用递归函数吗?
我发现了一个错误报告,但是有任何变通方法吗?
我在Windows XP(XAMPP Server)上运行MySQL 5.1.41.
小智 3
没问题,詹科。不如 PostgreSQL 函数那么高效,但在 MySQL 过程中也是可能的:
DELIMITER $$
DROP PROCEDURE IF EXISTS test.factorial_proc$$
CREATE PROCEDURE test.factorial_proc
(
   IN n   BIGINT, 
  OUT res BIGINT 
) 
BEGIN
  SET max_sp_recursion_depth=10; 
  IF n >= 2 THEN
    CALL test.factorial_proc (n-1, res);
    SELECT n * res INTO res;
  ELSE
    SELECT n INTO res;
  END IF;
END$$
DELIMITER ;
[test]> CALL test.factorial_proc (5, @res);
[test]> CALL test.factorial_proc (5, @res1);
[test]> select @res * @res1;
+--------------+
| @res * @res1 |
+--------------+
|        14400 |
+--------------+
谢尔盖·扎伊采夫。
| 归档时间: | 
 | 
| 查看次数: | 8413 次 | 
| 最近记录: |