PL/SQL Cursores Anidados

El día de hoy tuve que volver a mis origenes y me encargaron la tarea de sacar un reporte en la base de datos, Para eso era necesario crear un PL/SQL con dos cursores anidados (NESTED CURSOR), y bueno me tome la tarea de buscar en Internet y encontré partes que me ayudaron. Comparto con ustedes un script para obtener esa información:

declare
  v_idNivel1 number;
  v_nombreNivel1 varchar2(300);
  v_idNivel2 number;
  v_nombreNivel2 varchar2(300);

   /* Primer Cursor */
   cursor cur_nivel1 is
     select id, nombre 
      from tablaNivel1;

   /* Segundo Cursor */
   cursor cur_nivel2 is
      select id, nombre 
      from tablaNivel2
      where idPadre = v_idNivel1;

begin   
   /* Primer Cursor */
   open cur_nivel1;
   loop
      fetch cur_nivel1 into v_idNivel1, v_nombreNivel1;
      EXIT WHEN cur_nivel1%NOTFOUND;

      DBMS_OUTPUT.PUT_LINE( v_nombreNivel1 );

      /* Segundo Cursor */
      open cur_nivel2;
      loop
         fetch cur_nivel2 into v_idNivel2, v_nombreNivel2;
         EXIT WHEN cur_nivel2%NOTFOUND;
         DBMS_OUTPUT.PUT_LINE( CHR(9) || v_nombreNivel2 );
      end loop;
      close cur_nivel2;

   end loop;
   close cur_nivel1;
end;

Analista/Desarrollador y cofundador de QBit Mexhico. Tecnologías utilizadas Android, Java (EJB, Servlets, Faces, Groovy & Grails, Maven, Swing), .Net (C#, VB, ASP, MVC), Delphi, Spring, Hibernate, DTSx, Oracle, T-SQL, Firebird, MySQL, MongoDB, NodeJs, ReactJs (Flux). Sistemas Operativos Mac, Ubuntu y Windows.

Twitter LinkedIn 

Compartir en...Tweet about this on TwitterPin on Pinterest0Share on LinkedIn0Share on Google+0Share on Facebook4