ago
25
2011
PAQUETE DBMS_LOB (IV). EJEMPLOS
DBMS_LOB
Aquí os dejo algunos ejemplos del paquete DBMS_LOB:
–1º Ejemplo datos clob y blob (internos)
CREATE TABLE prueba
(id NUMBER,
col_clob CLOB,
col_blob BLOB,
col_bfile bfile);
DECLARE
v_blob BLOB;
BEGIN
-- Inicializa col_clob con la cadena especificada
INSERT INTO prueba(id,col_clob,col_blob,col_bfile)
VALUES (1,'abcdefghijklmnopqrstuvxyz',empty_blob(),NULL);
-- Modifica col_blob para la misma fila
UPDATE prueba
SET col_blob = Hextoraw('00FF00FF00FF')
WHERE id = 1;
END;
/
|
–2º Ejemplo : Manipulación de datos BFILE.
--Creación de un directorio
CREATE Directory DIRECTORIO AS 'C:\Ficheros' ;
GRANT READ ON directory DIRECTORIO TO public;
-- Ejemplo de inserción de objeto BFILE
-- Cuidado con las mayúsculas y con guión bajo
INSERT INTO prueba (id,col_bfile)
VALUES(2,bfilename('DIRECTORIO','empleados.txt'));
|
–3º Ejemplo: Función BFILEEXISTS
DECLARE
v_valor NUMBER;
v_col_bfile bfile;
BEGIN
SELECT col_bfile
INTO v_col_bfile
FROM prueba
WHERE id=2;
v_valor := dbms_lob.fileexists(v_col_bfile);
IF v_valor = 0 THEN
dbms_output.put_line('Existe');
elsif v_valor = 1 THEN
dbms_output.put_line('No Existe');
END IF;
END;
/
|
– 4º Ejemplo: Función FILEGETNAME
DECLARE
v_col_bfile bfile;
v_dir_alias varchar2(100);
v_fichero varchar2(100);
BEGIN
SELECT col_bfile
INTO v_col_bfile
FROM prueba
WHERE id=2;
dbms_lob.filegetname(v_col_bfile,v_dir_alias,v_fichero);
dbms_output.put_line('Directorio: '||v_dir_alias);
dbms_output.put_line('Fichero: '||v_fichero);
END;
/
|
– 5º Ejemplo: Función FILEOPEN y FILECLOSE
-- (Abrir y Cerrar un BFILE) Similar a UTL_FILE
DECLARE
v_col_bfile bfile;
BEGIN
v_col_bfile := bfilename('DIRECTORIO','empleados.txt');
dbms_lob.fileopen(v_col_bfile);
dbms_output.put_line('Abriendo fichero');
dbms_lob.fileclose(v_col_bfile);
dbms_output.put_line('Fichero cerrado');
END;
/
-- Si la columna clob está vacía no funciona. Se requiere el for update
INSERT INTO prueba (id,col_bfile,col_clob)
VALUES(2,bfilename('DIRECTORIO','empleados.txt'),empty_clob());
|
–6º Ejemplo: Función LOADFROMFILE y GETLENGTH
DECLARE
v_col_bfile bfile;
v_dest_lob CLOB;
BEGIN
SELECT col_clob
INTO v_dest_lob
FROM prueba
WHERE id=2 FOR UPDATE;
v_col_bfile := bfilename('DIRECTORIO','empleados.txt');
dbms_lob.fileopen(v_col_bfile);
dbms_lob.loadfromfile(v_dest_lob,v_col_bfile,dbms_lob.getlength(v_col_bfile));
UPDATE prueba
SET col_clob = v_dest_lob
WHERE id = 2;
commit;
dbms_lob.fileclose(v_col_bfile);
END;
/
-- Ver en SQL-PLUS el Clob
SELECT col_clob FROM prueba
WHERE id = 6;
|
– 7º Ejemplo: Función COMPARE
-- Primero Copiamos fichero anterior en S.O. (fichero_copia)
DECLARE
v_valor NUMBER;
v_col_bfile bfile;
v_col_bfile_bis bfile;
BEGIN
v_col_bfile := bfilename('DIRECTORIO','Fichero.txt');
v_col_bfile_bis := bfilename('DIRECTORIO','Fichero_copia.txt');
dbms_lob.fileopen(v_col_bfile);
dbms_lob.fileopen(v_col_bfile_bis);
v_valor:= dbms_lob.compare(v_col_bfile,v_col_bfile_bis,25);
dbms_lob.fileclose(v_col_bfile_bis);
dbms_lob.fileclose(v_col_bfile);
IF v_valor = 0 THEN
dbms_output.put_line('ficheros Iguales');
ELSE
dbms_output.put_line('Ficheros Diferentes');
END IF;
END;
/
|
–8º Ejemplo Función READ simple
DECLARE
v_dest_lob CLOB;
v_contenido varchar2(1000);
v_longitud INTEGER:=20; -- longitud de linea
v_pos INTEGER:=1;
BEGIN
SELECT col_clob
INTO v_dest_lob
FROM prueba
WHERE id=6 FOR UPDATE;
-- Lee y muestra los primeros v_longitud caracteres a partir de la posicion v_pos
dbms_lob.READ(v_dest_lob,v_longitud,v_pos,v_contenido);
dbms_output.put_line('Contenido:'||v_contenido);
exception
WHEN no_data_found THEN
NULL;
END;
/
|
–9º Ejemplo Función READ con bucle
DECLARE
v_dest_lob CLOB;
v_contenido varchar2(1000);
v_longitud INTEGER:=20; -- longitud de linea
v_pos INTEGER:=1;
BEGIN
SELECT col_clob
INTO v_dest_lob
FROM prueba
WHERE id=4 FOR UPDATE;
loop
-- Lee y muestra los primeros v_longitud caracteres a partir de la posicion v_pos
dbms_lob.READ(v_dest_lob,v_longitud,v_pos,v_contenido);
dbms_output.put_line('Contenido:'||v_contenido);
v_pos := v_pos + v_longitud;
END loop;
exception
WHEN no_data_found THEN
NULL;
END;
/
|
– 10º Ejemplo WRITE
DECLARE
v_dest_lob CLOB;
v_contenido varchar2(19):='Hola ¿Como estamos?';
v_pos NUMBER:=1;
BEGIN
SELECT col_clob
INTO v_dest_lob
FROM prueba
WHERE id=4 FOR UPDATE;
dbms_lob.WRITE(v_dest_lob,19,v_pos,v_contenido);
END;
/
|
– 11º Ejemplo SUBSTR
DECLARE
v_dest_lob CLOB;
v_contenido varchar2(20);
v_longitud NUMBER:=20;
v_pos NUMBER:=1;
BEGIN
SELECT col_clob
INTO v_dest_lob
FROM prueba
WHERE id=6 FOR UPDATE;
-- Lee y muestra los primeros v_longitud caracteres a partir de la posicion v_pos
v_contenido := dbms_lob.substr(v_dest_lob,v_longitud,v_pos);
dbms_output.put_line('Contenido:'||v_contenido);
END;
/
|
– 12º Ejemplo APPEND
-- Abrimos fichero nuevo llamado fichero_prueba e insertamos reg nuevo
INSERT INTO prueba (id,col_clob)
VALUES(9,empty_clob());
-- Lo insertamos en la columna LOB mediante ejemplo 6
-- Añadimos el contenido del 6 al 9
DECLARE
v_lob CLOB;
v_lob_bis CLOB;
BEGIN
SELECT col_clob
INTO v_lob
FROM prueba
WHERE id=6 FOR UPDATE;
SELECT col_clob
INTO v_lob_bis
FROM prueba
WHERE id=9 FOR UPDATE;
-- Añade el contenido del CLOB v_lob (6) al v_lob_bis(9)
dbms_lob.append(v_lob_bis,v_lob);
END;
/
|
– 13º Ejemplo COPY
DECLARE
v_lob CLOB;
v_lob_bis CLOB;
v_tamano NUMBER:= 20;
BEGIN
SELECT col_clob
INTO v_lob
FROM prueba
WHERE id=6 FOR UPDATE;
SELECT col_clob
INTO v_lob_bis
FROM prueba
WHERE id=10 FOR UPDATE;
-- Añade el contenido del CLOB v_lob (6) al v_lob_bis(10) los
-- primeros v_tamano caracteres
dbms_lob.copy(v_lob_bis,v_lob,v_tamano);
END;
/
|
– 14º Ejemplo ERASE
DECLARE
v_lob CLOB;
v_tamano NUMBER:= 5; -- Borramos unas lineas
-- v_tamano_todo number:= 50; -- Borramos todo
BEGIN
SELECT col_clob
INTO v_lob
FROM prueba
WHERE id=10 FOR UPDATE;
-- Borra los primeros v_tamano caracteres del CLOB de 10
dbms_lob.erase(v_lob,v_tamano);
-- Borra todo el CLOB
-- dbms_lob.erase(v_lob,v_tamano_todo);
END;
/
|
DBMS_LOB ORACLE
Han llegado aquí buscando:
Ningún usuario a búscado algo parecido en nuestra website
Etiquetas:
BFILE,
COMPARE,
CREATE DIRECTORY,
DBMS_LOB,
FILECLOSE,
FILEEXISTS,
FILEGETNAME,
FILEOPEN,
GETLENGTH,
LOADFROMFILE,
ORACLE,
READ,
SESSION_MAX_OPEN_FILES,
SUBSTR,
WRITE
Related Posts
Acerca del Autor: