USO CORRECTO DEL TIPO CLOB

       Como la mayoría de lenguajes de programación, PL/SQL tiene limitaciones de capacidad en los tipos de variable más típicos. Como ejemplo mencionar el VARCHAR2, que puede almacenar hasta 32K de información. La solución, cuando se va a sobrepasar este límite, es utilizar el tipo de datos CLOB.


       Entonces, ¿Por qué no nos curamos en salud y utilizamos siempre el tipo de datos CLOB?

       Vemos un ejemplo típico

          
                        
  declare
    v_clob clob;
    v_cadena varchar2(200) := 'texto a concatenar';
  begin
    for i in 1..100000 loop
      v_clob := v_clob || v_cadena;
    end loop;
  end;
                     
                  

       Funcionalmente, lo anterior es perfecto, pero el coste es altísimo. La concatenación de CLOB’s es muy costosa en comparación con el resto de operaciones. Así, la utilización de un “buffer” o variable VARCHAR2 en la cual vayamos almacenando los resultados intermedios ahorra más coste.

       Es decir, es mejor acumular la información en un VARCHAR2 y sólo volcarla en CLOBs cuando sea estrictamente necesario:

          
                        
declare
    v_clob clob;
    v_texto varchar2(32767);
  v_cadena varchar2(200) := 'texto a concatenar';
  begin
    for i in 1..100000 loop
      if length(v_texto) + length(v_cadena) <= 32767 then
        v_texto := v_texto || v_cadena;
      else
        v_clob := v_clob || v_texto;
        v_texto := v_cadena;
      end if;
    end loop;
    v_clob := v_clob || v_texto;
  end;
                     
                  

No hay comentarios: