Saltar al contenido
Codifíca.me | Desarrollo web | Programación

PAQUETE DBMS_LOB (I)

8 agosto, 2011

Este paquete lo voy a desarrollar en varias partes porque tiene bastante “chicha”.
Los objetos LOB (Long Object – Objetos de gran tamaño):

Pueden almacenar texto plano o texto binario y parecer columnas dentro de una tabla.
Su tamaño puede llegar hasta los 8 Gb.
Se manipulan mediante OCI (Oracle Call Interface) o DBMS_LOB
Como ventaja al uso del tipo LONG, disponemos de un número ilimitado de columnas LOB en la tabla
Los LOB’s se pueden usar como variables de acoplamiento.

Tipos:
1. CLOB. Similar al tipo LONG
2. NCLOB. almacenan carácter UNICODE (Multibyte)
3. BLOB. Similar al tipo LONG RAW. Datos binarios no estructurados.
4. BFILE. Permite el acceso sólo de lectura a archivos binarios de gran tamaño almacenados fuera e la Base de Datos de Oracle. ( Es un puntero)

Almacenamiento

Los tipos de datos BFILE no se almacenan dentro de las tablas de base datos, sino en sitio separado.
Dentro de las tablas se guardan su “localizador” (puntero)
Definimos los campos dentro de las tablas como columnas normales, pero al darles valor, deberemos tratarlos como objetos.

Create table t1 (key number primary key, CLOB_Col CLOB, BLOB_Col, BFILE_Col BFILE);

Inicialización LOB’s

Una columna LOB se puede inicializar a NULL, lo cual indica que no existe un almacenamiento real de ningún tipo de datos.
no se puede usar el paquete DBMS_LOG para manipular un Localizador a NULL.
Disponemos de una serie de procedimientos de inicialización para poder usar los LOB’s de forma correcta.

 

EMPTY_BLOB()
EMPTY_CLOB()
 
INSERT INTO T1 VALUES(10, NULL, NULL, NULL);
INSERT INTO T1 VALUES(20, empty_clob(), empty_blob(), NULL); 
--> Esta sería la forma correcta.