BULK COLLECT

    PL/SQL nos permite leer varios registros en una tabla de PL con un único acceso a través de la instrucción BULK COLLECT.

    Esto nos permitirá reducir el número de accesos a disco, por lo que optimizaremos el rendimiento de nuestras aplicaciones. Como contrapartida el consumo de memoria será mayor.


 DECLARE
   TYPE t_descripcion IS TABLE OF PAISES.DESCRIPCION%TYPE;
   TYPE t_continente  IS TABLE OF PAISES.CONTINENTE%TYPE;
   v_descripcion t_descripcion;
   v_continente  t_continente;
  
 BEGIN
   SELECT DESCRIPCION,
    CONTINENTE
   BULK COLLECT INTO v_descripcion, v_continente
   FROM PAISES;
   FOR i IN v_descripcion.FIRST .. v_descripcion.LAST LOOP
     dbms_output.put_line(v_descripcion(i) || ', ' || v_continente(i));
   END LOOP;
 END;
 /

    Podemos utilizar BULK COLLECT con registros de PL.


 DECLARE
   TYPE PAIS IS RECORD (CO_PAIS     NUMBER  ,
         DESCRIPCION VARCHAR2(50),
         CONTINENTE  VARCHAR2(20));
   TYPE t_paises IS TABLE OF PAIS;
   v_paises t_paises;
 BEGIN
   SELECT  CO_PAIS, DESCRIPCION, CONTINENTE
   BULK COLLECT INTO v_paises
   FROM PAISES;
 
   FOR i IN v_paises.FIRST .. v_paises.LAST LOOP
     dbms_output.put_line(v_paises(i).DESCRIPCION ||
', ' || v_paises(i).CONTINENTE);
   END LOOP;
 END;
 /

    Tambien podemos utilizar el atributo ROWTYPE.


 DECLARE
 
   TYPE t_paises IS TABLE OF PAISES%ROWTYPE;
   v_paises t_paises;
 BEGIN
   SELECT  CO_PAIS, DESCRIPCION, CONTINENTE
   BULK COLLECT INTO v_paises
   FROM PAISES;
 
   FOR i IN v_paises.FIRST .. v_paises.LAST LOOP
     dbms_output.put_line(v_paises(i).DESCRIPCION ||
', ' || v_paises(i).CONTINENTE);
   END LOOP;
 END;
 /

Pedro  Herrarte  Sánchez
BULK COLLECT
Pedro Herrarte Sánchez

Pedro Herrarte, es consultor independiente, ofreciendo servicios de consultoría, análisis, desarrollo y formación. Posee mas de diez años de experiencia trabajando para las principales empresas de España. Es especialista en tecnologías .NET, entornos Web (ASP.NET, ASP.NET MVC,jQuery, HTML5), bases de datos (SQL Server y ORACLE) e integración de sistemas. Es experto en desarrollo (C#, VB.Net, T-SQL, PL/SQL, , ASP, CGI , C, Pro*C, Java, Essbase, Vignette, PowerBuilder y Visual Basic ...) y bases de datos (SQL Server y ORACLE). Pedro es MCP y MAP 2012, es fundador, diseñador y programador de www.devjoker.com..
Fecha de alta:21/02/2007
Última actualizacion:21/02/2007
Visitas totales:137188
Valorar el contenido:
Últimas consultas realizadas en los foros
Últimas preguntas sin contestar en los foros de devjoker.com
16/12/2009
0
64
27/08/2007
1
342
SQL
11/07/2007
0
216
SQL