mysql stored procedure that calls itself recursively

后端 未结 4 1954
太阳男子
太阳男子 2020-11-28 14:10

I have the following table:

id | parent_id | quantity
-------------------------
1  | null      | 5
2  | null      | 3
3  | 2         | 10
4  | 2         | 15         


        
4条回答
  •  迷失自我
    2020-11-28 14:42

    its work only in mysql version >= 5

    the stored procedure declaration is this,

    you can give it little improve , but this working :

    DELIMITER $$
    
    CREATE PROCEDURE calctotal(
       IN number INT,
       OUT total INT
    )
    
    BEGIN
    
       DECLARE parent_ID INT DEFAULT NULL ;
       DECLARE tmptotal INT DEFAULT 0;
       DECLARE tmptotal2 INT DEFAULT 0;
    
       SELECT parentid   FROM test   WHERE id = number INTO parent_ID;   
       SELECT quantity   FROM test   WHERE id = number INTO tmptotal;     
    
       IF parent_ID IS NULL
        THEN
        SET total = tmptotal;
       ELSE     
        CALL calctotal(parent_ID, tmptotal2);
        SET total = tmptotal2 * tmptotal;   
       END IF;
    
    END$$
    
    DELIMITER ;
    

    the calling is like (its important to set this variable) :

    SET @@GLOBAL.max_sp_recursion_depth = 255;
    SET @@session.max_sp_recursion_depth = 255; 
    
    CALL calctotal(6, @total);
    SELECT @total;
    

提交回复
热议问题