Saltar al contenido

Oracle: Connect By Loop en datos de usuario

No dudes en compartir nuestro espacio y códigos en tus redes, necesitamos de tu ayuda para ampliar esta comunidad.

Solución:

Agregue la expresión nocycle
connect by nocycle

Para encontrar los hijos de una fila principal, Oracle evalúa la expresión PRIOR de la condición CONNECT BY para la fila principal y la otra expresión para cada fila de la tabla. Filas para las que la condición es true son los hijos del padre. La condición CONECTAR POR puede contener otras condiciones para filtrar aún más las filas seleccionadas por la consulta.

Si la condición CONNECT BY da como resultado un bucle en la jerarquía, Oracle devuelve un error. Se produce un bucle si una fila es a la vez padre (o abuelo o antepasado directo) y un hijo (o un nieto o un descendiente directo) de otra fila.

si no hay filas que satisfagan START WITH y tienen Job = ‘PRESIDENT’, el bucle nunca ocurrirá (Oracle solo recupera las filas START WITH)

si hay una fila en la tabla que satisface START WITH y tiene Job = ‘PRESIDENT’, el ciclo ocurre en cualquier caso porque:
1. Oracle busca todas las filas que satisfacen el COMIENZO CON (filas raíz).
2. Para cada fila de la p.1, Oracle escanea toda la tabla en busca de descendientes. Todas las filas (incluida la fila de la p. 1) satisfacen la condición en CONNECT BY (porque Job anterior = ‘PRESIDENT’ es siempre true)
3. Obvio …

SELECT Empno, Ename, Job
FROM Emp
START WITH Empno = 7839
CONNECT BY nocycle PRIOR
Job='PRESIDENT'

Reseñas y calificaciones

Al final de la artículo puedes encontrar las interpretaciones de otros desarrolladores, tú además tienes el poder dejar el tuyo si te gusta.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *