26 lines
815 B
MySQL
26 lines
815 B
MySQL
|
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 ;
|