Estoy tratando de armar un listado de secciones anidadas, donde los hijos quiero ordenarlos por el campo orden y no por el id de cracion. Logre hacerlo a traves de un query pero cuando lo coloco en una funcion me tira error. el codigo del query es
Código:
SELECT s.id_seccion AS id_seccion,
ordenS,
LPAD ('-', (s.nivel - 1) * 1, '-') || s.nombre AS nombrearbol,
s.fk_id_modulo AS fk_id_modulo,
CASE (s.habilitado)
WHEN '1'
THEN 'Si'
ELSE 'No'
END AS habilitado
FROM (SELECT s1.*, itf.orden as ordenS, LEVEL AS nivel
FROM secciones s1 LEFT JOIN items_front itf
ON itf.fk_id_seccion = s1.id_seccion
WHERE s1.borrado = '0'
CONNECT BY PRIOR s1.id_seccion = s1.fk_id_seccion
START WITH s1.fk_id_seccion IS NULL
ORDER SIBLINGS BY ordenS) s
y en la funcion me dice que el ORDER SIBLINGS BY no es valido
Necesitaria saber si es posible usar el SIBLINGS dentro de las funciones y de que forma y si no alguna opcion para poder ordenar los hijos por el campo que yo desee.
dejo tambien el codigo de la funcion
Gracias
Código:
CREATE OR REPLACE FUNCTION get_arbol_secciones_back
RETURN secciones_back_type_table PIPELINED AS
v_MyType secciones_back_type;
BEGIN
FOR recMenu IN (
SELECT s.id_seccion AS id_seccion,
ordenS,
LPAD ('-', (s.nivel - 1) * 1, '-') || s.nombre AS nombrearbol,
s.fk_id_modulo AS fk_id_modulo,
CASE (s.habilitado)
WHEN '1'
THEN 'Si'
ELSE 'No'
END AS habilitado
FROM (SELECT s1.*, itf.orden as ordenS, LEVEL AS nivel
FROM secciones s1 LEFT JOIN items_front itf
ON itf.fk_id_seccion = s1.id_seccion
WHERE s1.borrado = '0'
CONNECT BY PRIOR s1.id_seccion = s1.fk_id_seccion
START WITH s1.fk_id_seccion IS NULL
ORDER SIBLINGS BY ordenS) s
) LOOP
v_MyType := secciones_back_type(recMenu.id_seccion, recMenu.nombrearbol, recMenu.fk_id_modulo, recMenu.habilitado);
PIPE ROW(v_MyType);
END LOOP;
RETURN;
END get_arbol_secciones_back;