roll_up_account_table_by_level#

Parameters#

Name

Type

table_name

varchar(50)

from_level

int

to_level

int

SQL Definition#

CREATE PROCEDURE `roll_up_account_table_by_level`(IN table_name varchar(50), IN from_level int, IN to_level int)
BEGIN
    SET SQL_SAFE_UPDATES = 0;
        SET @stmt = CONCAT('UPDATE ', table_name, ',',
                        '(SELECT a',to_level,'.code_of_account as ac',to_level,'_coa, ',
                                'sum(ua',from_level,'.total_cost) as a',to_level,'_cal_total_cost ',
                        'FROM ', table_name, ' as ua',from_level,
                        ' JOIN ', table_name, ' as a',to_level,
                        ' on ua',from_level,'.supaccount=a',to_level,'.code_of_account ',
                        'where ua',from_level,'.level=',from_level,
                        ' and a',to_level,'.level=',to_level,
                        ' group by a',to_level,'.code_of_account) as updated_ac',to_level,
                        ' SET ',
                        table_name,'.total_cost = updated_ac',to_level,'.a',to_level,'_cal_total_cost,',
                        table_name,'.review_status = \'Updated\' ',
                        'WHERE ',
                        table_name,'.code_of_account = updated_ac',to_level,'.ac',to_level,'_coa');
        PREPARE stmt FROM @stmt;
        EXECUTE stmt;
        DEALLOCATE PREPARE stmt;
END;;