2007-04-17

A Função connect by

No oracle a função
connect by
permite executar um query sobre uma tabela com hierarquia.
Por exemplo:

SELECT nome
FROM nome
CONNECT BY [NOCYCLE] [PRIOR] id=parent_id -- especifica a hierarquia
[START WITH parent_id is null] -- por onde deve comecar
[ORDER SIBLINGS BY ordem ] -- como ordena os filhos de um mesmo pai


São importantes as pseudo-colunas que poderemos então usar no output do select.

CONNECT_BY_ISLEAF - devolve 1 se a linha é final na hierarquia especificada (0 se não).

CONNECT_BY_ISCYCLE - devolve 1 se a linha tem um filho que é seu pai (usar com
NOCYLCE no CONNECT BY).

LEVEL - devolve 1 se é raiz, 2 se é filho da raiz e assim por diante (3, 4,...)

SYS_CONNECT_BY_PATH( <coluna>, <char_separador>) - devolve o caminho pela concatenação das colunas dos "pais"+"filho" separados pelo conjunto de caracteres escolhido


CONNECT_BY_ROOT <coluna> - devolve o valor da coluna para o elemento raiz "pai" da linha actual

No comments:

Post a Comment

Os comentários são moderados.
The comments are moderated.