--- title: print_leveled_accounts_gn_all --- # print_leveled_accounts_gn_all ## Parameters | **Name** | **Type** | |----------|----------| | acc_table | varchar(50) | | cel_table | varchar(50) | | level | int | ## SQL Definition ```sql CREATE PROCEDURE `print_leveled_accounts_gn_all`(IN acc_table varchar(50), IN cel_table varchar(50), IN level int) BEGIN SET @stmt=CONCAT('SELECT acc.gn_level, rankedcoa.gncoa as gncoa, acc.account_description, sorted_ce.fac_cost, sorted_ce.lab_cost, sorted_ce.mat_cost, acc.total_cost, acc.review_status FROM ',acc_table,' as acc JOIN (SELECT node.gncoa AS COA, CONCAT(REPEAT(" ", node.gn_level), node.gncoa) AS gncoa FROM ', acc_table, ' AS node ORDER BY node.gn_ind) AS rankedcoa ON acc.gncoa=rankedcoa.COA JOIN (SELECT splt_act.code_of_account, cef.cost_2017 AS fac_cost, cel.cost_2017 AS lab_cost, cem.cost_2017 AS mat_cost FROM (SELECT code_of_account, CONCAT(code_of_account, "_fac") AS fac_name, CONCAT(code_of_account, "_lab") AS lab_name, CONCAT(code_of_account, "_mat") AS mat_name FROM ',acc_table,') AS splt_act LEFT JOIN ',cel_table,' AS cef ON cef.cost_element = splt_act.fac_name LEFT JOIN ',cel_table,' AS cel ON cel.cost_element = splt_act.lab_name LEFT JOIN ',cel_table,' AS cem ON cem.cost_element = splt_act.mat_name) as sorted_ce ON sorted_ce.code_of_account=acc.code_of_account WHERE acc.gn_level <= ? ORDER BY acc.gn_ind;'); PREPARE stmt FROM @stmt; SET @level=level; EXECUTE stmt USING @level; DEALLOCATE PREPARE stmt; END;;