/* @mostrarArbol */ set echo on set linesize 120 set pagesize 60 column rfNodo heading "idNodo" format 999 column rfPadre heading "idPadre" format 999 column nodo format A12 column Padre format A12 column namNodo format A16 column Path format A80 column level format 999 /* mostrar todas las tuplas de la tabla */ SELECT * FROM Arbol; /* mostrar cada nodo con su padre (se repiten) */ SELECT * FROM Arbol CONNECT BY PRIOR rfnodo = rfpadre; /* mostrar ordenados todos los nodos con su padre */ SELECT DISTINCT * FROM Arbol CONNECT BY PRIOR rfnodo = rfpadre ORDER BY namNodo; /* mostrar el árbol comenzando desde la raiz (en preorden) */ SELECT DISTINCT * FROM Arbol START WITH rfPadre IS NULL CONNECT BY PRIOR rfnodo=rfpadre; /* mostrar el árbol comenzando desde la raiz (en preorden) junto con el nivel y el path (el nombre del nodo se muestra sangrado) */ SELECT lpad(' ', level-1 )||namNodo nodo, level, SYS_CONNECT_BY_PATH(namNodo, '/') "Path" FROM Arbol START WITH rfPadre IS NULL CONNECT BY rfpadre = PRIOR rfnodo; /* mostrar los nodos que están al nivel especificado interactivamente */ SELECT namNodo nodo, level, SYS_CONNECT_BY_PATH(namNodo, '/') "Path" FROM Arbol WHERE level = &nivelBuscado START WITH rfPadre IS NULL CONNECT BY PRIOR rfnodo=rfpadre; /* mostrar el subArbol correspondiente al nodo especificado interactivamente */ SELECT lpad(' ', level-1 )||namNodo nodo, level, SYS_CONNECT_BY_PATH(namNodo, '/') "Path" FROM Arbol START WITH rfNodo = &nodoRaiz CONNECT BY PRIOR rfnodo=rfpadre; /* en Oracle 10 se introducen más operadores */