ERROR con Función Recursiva
Publicado por Juan (25 intervenciones) el 04/02/2019 18:41:46
Buenas gente
Estoy tratando de hacer funcionar esta función recursiva, pero al declarar la FUNCTION me sale error de Sintaxis SQL
Estoy trabajando con MySQL 5.7. No sé, si observáis algún error en el código que uso, que es el siguiente:
Los resultados que esperaría son en cada fila:
nombre id PadreNombre
Siendo PadreNombre una cadena en la que se muestran los Nombres desde el raíz hasta el nodo actual.
Un saludo
Estoy tratando de hacer funcionar esta función recursiva, pero al declarar la FUNCTION me sale error de Sintaxis SQL
1
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 3
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
DROP PROCEDURE IF EXISTS getPadre;
DELIMITER $$
CREATE PROCEDURE getPadre(IN padre_id INT UNSIGNED, OUT return_path TEXT)
BEGIN
DECLARE parent_id INT UNSIGNED;
DECLARE path_result TEXT;
SET max_sp_recursion_depth=50;
SELECT CONCAT('/', ma.nombre), ma.padre INTO return_path, parent_id FROM nc_matrices AS ma WHERE ma.id = padre_id;
IF parent_id > 0 THEN
CALL getPadre(parent_id, path_result);
SELECT CONCAT(path_result, return_path) INTO return_path;
END IF;
END $$
DELIMITER ;
DROP FUNCTION IF EXISTS getPadre;
CREATE FUNCTION getPadre(padre_id INT) RETURNS TEXT DETERMINISTIC
BEGIN
DECLARE res TEXT;
CALL getPadre(padre_id, res);
RETURN res;
END;
SELECT nombre, id, getPadre(id) AS PadreNombre FROM nc_matrices;
Los resultados que esperaría son en cada fila:
nombre id PadreNombre
Siendo PadreNombre una cadena en la que se muestran los Nombres desde el raíz hasta el nodo actual.
Un saludo
Valora esta pregunta


0