with recursive HIERARQUIA as (select TC.ID , TC.id_pai , TC.id_filho ,C.nome ,C.ativo , cast(lpad(TC.ID,9,0)as varchar(2000)) as Ordem from tree_control TC inner Join Control C on C.id = TC.id_filho where TC.id_pai is null and C.ativo = 'S' union all select TC.ID , TC.id_pai , TC.id_filho ,C.nome ,C.ativo , cast(H.Ordem || lpad(TC.id,9,0)as varchar(2000)) from HIERARQUIA H join tree_control TC on H.ID_Filho = TC.id_Pai inner Join Control C on C.id = TC.id_filho where H.ativo = 'S' ) select H.ID , H.id_pai , H.id_filho ,H.nome ,H.ativo ,H.Ordem from HIERARQUIA H where ((H.id_pai = :ID) or (:P_ID = 'S')) order by H.Ordem