Saltar al contenido

PAQUETE DBMS_LOB (III). FUNCIONES

Aquí os dejo funciones para trabajar con el paquete DBMS_LOB:

1. FILEEXISTS

Indica la existencia o no del fichero indicado
Si devuelve 1 –> fichero existente; 0 –> fichero inexistente

Numer := DBMS_LOB.FILEEXISTS (Localizador IN BFILE);

Se pueden producir las siguientes excepciones, cuando el localizalizados tiene un valor inapropiado (NULL).

DBMS_LOB.NOEXIST_DIRECTORY.
DBMS_LOB.NOPRIV_DIRECTORY.
DBMS_LOB.INVALID_DIRECTORY.

2. FILEGETNAME

Procedimiento que devuelve el Directorio + Fichero asociado a ese localizador, dentro de las variables indicadas.

DBMS_LOB.FILEGETNAME(Localizador, var_directorio, var_fichero);

Se pueden producir las siguientes excepciones, cuando el localizador tiene un valor inapropiado (NULL)
DBMS_LOB.INVALID_ARGVAL

3. FILEOPEN

Procedimiento que abre un BFILE indicado de Solo Lectura.

DBMS_LOB.FILEOPEN(Localizador);

Se pueden producir las siguientes excepciones, cuando el localizador tiene un valor inapropiado (NULL):
NOEXIST_DIRECTORY No existe el directorio indicado
OPEN_TOOMANY Número de ficheros abiertos excede SESSION
INVALID_ARGVAL El modo de apertura no es correcto
INVALID_OPERATION No tiene privilegios para acceder al fichero.

4. FILECLOSE

Procedimiento que cierra un BFILE previamente abierto

DBMS_LOB.FILECLOSE(Localizador);

Se pueden producir las siguientes excepciones, cuando el localizador tiene un valor inapropiado (NULL)
VALUE_ERROR Valor inapropiado para el localizador

5. LOADFROMFILE

Procedimiento que se utiliza para leer Todo/parte de un fichero externo (BIFLE) o un Objeto LOB interno.
El dato leído lo almacena en un objeto LOB

DBMS_LOB.LOADFROMFILE(Destino, Localizador, tamaño, [Offset_destino], [Offset_fuente]);

DBMS_LOG.LOADFROMFILE (Objeto_LOB, Localizador,100); -- Los otros los toma como 1

En el ejemplo copiamos 100 bytes al destino.

Se pueden producir las siguientes excepciones, cuando los localizadores tienen un valor inapropiado (NULL) o si el tamaño es NULL:

VALUE_ERROR Valor inapropiado para el localizador
INVALID_ARGVAL Cuando el tamaño es el inapropiado
offset_des LOBMAXSIZE
offset_soruce LOBMAXSIZE
tamaño LOBMAXSIZE

6. GETLENGTH

Devuelve el tamaño en bytes del fichero pasado como parámetro

Número:= DBMS_GETLENGTH (Localizador);

7. COMPARE

Es un función que se usa para comparar 2 objetos LOB’s del mismo tipo
Si devuelve 0 –> ficheros idénticos; 1 –> ficheros diferentes
NULL –> Objetos de diferente tipo

NUMBER:= DBMS_LOB.COMPARE (Localizador1, Localizador2, tamaño);

Compara ciertos bytes de los objetos.

Se pueden producir las siguientes excepciones, cuando el localizador tiene un valor inapropiado (NULL):
DBMS_LOB.NOEXIST_DIRECTORY
DBMS_LOB.UNOPEN_FILE
DBMS_LOB.INVALID_DIRECTORY
DBMS_LOB.INVALID_OPERATION

8. READ

Lee en el buffer indicado el número de bytes (BFILE;BLOB)/ caracteres (CLOB/NCLOB) indicados.

DBMS_LOB.READ (Localizador, Tamaño, FOCET, OUT Buffer);

Si el objeto a leer es un BFILE o BLOB, el buffer se debe declarar como variable RAW.
Si el objeto a leer es un CLOB o NCLOB, el buffer se debe declarar como variable VARCHAR2.

Text_buffer varchar2(128);
DBMS_LOB.READ(LOC, 128, 1, test_buffer);

9. WRITE

Escribe desde el buffer indicado el número de bytes (BFILE, BLOB) /caracteres (CLOB/¨NCLOB) indicados.

DBMS_LOB.WRITE (Localizador, Tamaño, offset, Buffer);

Si el objeto a escribir es un BFILE o BLOB, el buffer se debe declarar como variable RAW y contener el valor a escribir.
Si el objeto a escribir es un CLOB o NCLOB, el buffer se debe declarar como variable VARCHAR2 y contener el valor a escribir.

Text_buffer varchar2(128):= ‘Hola como estamos’;
DBMS_LOB.WRITE(LOC, 128, 1, test_buffer);

10. SUBSTR

Devuelve el número de bytes(BFILE.BLOB) /caracteres (CLOB/NCLOB) indicados.

buffer:=DBMS_LOB.SUBSTR(Localizador, Tamaño, Offset);

Si el Objeto a leer es un BFILE o BLOB, el buffer se debe de declarar como variable RAW.
Si el objeto a leer es un CLOB o NCLOB, el buffer se debe declarar como variable VARCHAR2.

Text_buffer varchar2(128);
Buffer:=DBMS_LOB.SUBSTR(LOC, 128, 1);

MODIFICANDO BLOB, CLOB y NCLOB

11. APPEND

Procedimiento que añade un BLOB/CLOB a continuación de un objeto del mismo tipo

DBMS_LOB.APPEND (Localizador_destino, Localizador_fuente);

12. COPY
Procedimiento que copia todo o parte del contenido de un LOB a otro LOB

DBMS_LOB.COPY (Localizador_destino, Localizador_fuente, tamaño);

13. ERASE

Procedimiento que elimina todo o parte del contenido de un LOB

DBMS_LOB.ERASE(Localizador, Tamaño);

En esta tabla podemos ver los directorios creados

SELECT * FROM all_directories;  En esta tabla podemos ver los directorios creados.