Para criar um select recursivo no oracle e recuperar a estrutura/árvore e saber qual o filho, existem os seguinte comandos: SYS_CONNECT_BY_PATH e CONNECT_BY_ROOT. Dada a tabela em que na mesma tabela há um id, e um outro campo identificador que aponta para o id, ou seja aponta para o pai.
Veja exemplo abaixo:
- SELECT *
- FROM ( SELECT fnc_identi,
- fnc_fnc_identi,
- fnc_descri,
- SYS_CONNECT_BY_PATH (fnc_identi,'.') tree,
- CONNECT_BY_ROOT fnc_identi children
- FROM tms_funcao CONNECT BY PRIOR fnc_fnc_identi = fnc_identi)
- WHERE fnc_identi = 134
SELECT *
FROM ( SELECT fnc_identi,
fnc_fnc_identi,
fnc_descri,
SYS_CONNECT_BY_PATH (fnc_identi,'.') tree,
CONNECT_BY_ROOT fnc_identi children
FROM tms_funcao CONNECT BY PRIOR fnc_fnc_identi = fnc_identi)
WHERE fnc_identi = 134
Estou sem o oracle na minha máquina para executar e apresentar o resultado, entretanto é bem simples e acredito que apenas o código vai ajudar.
Então ensinarei aos transgressores os teus caminhos, e os pecadores a ti se converterão. (Salmos 51:13)
Tags: select recursivo, recursivo, estrutura, arvore, SYS_CONNECT_BY_PATH, CONNECT_BY_ROOT, oracle, sql