Filtro em consulta hierarquica no Oracle

Alguém em algum momento observou algum problema na utilização de querie hierárquica no Oracle, pois quando utilizo querie hierarquica com base oracle nas consultas(grid) no scriptcase os filtros apresentam erros e pior erros de execução do relatório.

Está utilizando
START WITH
e
CONNECT BY ???


Para quem não sabe, segue explicação de query hierarquica:

CREATE TABLE empregados (
    id NUMBER PRIMARY KEY,
    nome VARCHAR2(50),
    gerente_id NUMBER REFERENCES empregados(id)
);

A tabela empregados armazena informações sobre funcionários e seus gerentes. O campo gerente_id referencia o id do gerente de cada funcionário. Vamos inserir alguns dados de exemplo:

sql

INSERT INTO empregados (id, nome, gerente_id) VALUES (1, 'Ana', NULL);
INSERT INTO empregados (id, nome, gerente_id) VALUES (2, 'Bruno', 1);
INSERT INTO empregados (id, nome, gerente_id) VALUES (3, 'Carlos', 1);
INSERT INTO empregados (id, nome, gerente_id) VALUES (4, 'Diana', 2);
INSERT INTO empregados (id, nome, gerente_id) VALUES (5, 'Eva', 2);

Agora, podemos criar uma query hierárquica para visualizar a hierarquia de gerentes e empregados:

sql

SELECT
    LPAD(' ', LEVEL * 2) || nome AS hierarquia
FROM
    empregados
START WITH
    gerente_id IS NULL
CONNECT BY
    PRIOR id = gerente_id;

Vamos entender o que cada parte da query faz:

  • START WITH gerente_id IS NULL: Define o ponto de início da hierarquia. Neste caso, começamos pelos funcionários que não têm gerente, ou seja, os de nível mais alto (Ana).
  • CONNECT BY PRIOR id = gerente_id: Estabelece a relação hierárquica. A palavra-chave PRIOR refere-se ao registro pai na hierarquia. Aqui, estamos dizendo que o gerente_id do funcionário atual deve corresponder ao id do registro anterior (gerente).
  • LEVEL: Uma pseudo-coluna que retorna a profundidade do registro atual na hierarquia, começando em 1 para os registros de nível mais alto.
  • LPAD(' ', LEVEL * 2) || nome AS hierarquia: Formata a saída adicionando espaços à esquerda do nome do funcionário, conforme o nível na hierarquia, para visualizarmos melhor a estrutura.

A saída será:

plaintext

  Ana
    Bruno
      Diana
      Eva
    Carlos

Sim utilizando estrutura basica START WITH e CONNECT BY.

Nesse caso em específico aconselho usar View.