DELIMITER $$ CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn2008`.`unary_scan_ident`(v_top INT, v_space INT) BEGIN /** * A partir de un nodo devuelve el id y el nombre del nodod y sus hijos. * El nombre viene identado segun el numero de espacios multiplicado por la profundiad del nodo. * * v_top: Id del nodo padre. * v_space: Spacios a dejar al identar, * @table tmp.tree_ident Tabla con los ids de los nodos descendientes y su nombre identado; **/ DROP TEMPORARY TABLE IF EXISTS tmp.tree_ident; CALL tree_leaves(v_top); CREATE TEMPORARY TABLE tmp.tree_ident ENGINE = MEMORY SELECT t.id, CONCAT( REPEAT(REPEAT(" ",v_space), t.depth), sp.name) AS name FROM tmp.tree t INNER JOIN unary_scan sp ON t.id = sp.id; END$$ DELIMITER ;