salix/db/routines/vn2008/procedures/unary_scan_ident.sql

26 lines
815 B
SQL

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 ;