2 campos blob en oracle

Hola amigo, necesito su ayuda, estoy trabajando en una tabla con un campo blob, la sentencia es esta:
RAISE;
END;
Lo corro en SQL Develor, esto me funciona para tablas con un numero menor de campos pero en este caso me da ERROR: ORA 00972: el identificador es demaciado largo.
Que debo hacer?
Ademas tengo que definir otro campo como tipo blob para subir fotos en esta misma tabla pero no se como codificarlo.
 De antemano muchas gracias experto.

1 respuesta

Respuesta
1
¿No he entendido la pregunta?
No aparece bien la pregunta en la web y no he podido leerla.
ok, gracias por el interes Samuel, la cuestion es la siguiente:
tengo este ejemplo:
CONNECT sysdba;
OR
DIRECTORY AS'C:\ORACLE\BLOB\IMAGES';
GRANT READ ON DIRECTORY IMAGES to SYSTEM WITH GRANT OPTION; GRANT READ ON DIRECTORYPUBLIC;
CREATE TABLE ARCHIVOS
(CO_ARCHIVO  not null,
 NOMBRE_ARCHIVO VARCHAR2(100) not null,
 BIN            BLOB              null,
 FX_ALTA        DATE              null,
 CONSTRAINT PK_ARCHIVOS PRIMARY KEY (CO_ARCHIVO)
 )
DECLARE
  l_bfile  BFILE;
  l_blob   BLOB;
BEGININSERT INTO ARCHIVOS
VALUES'000045','DibujoTiti',EMPTY_BLOB(),SYSDATE)
RETURN BIN INTO l_blob;
l_bfile := BFILENAME('IMAGES', 'DibujoTiti.);
  DBMS_LOB.fileopen(l_bfile, Dbms_Lob.File_Readonly);
  DBMS_LOB.loadfromfile(l_blob,l_bfile,DBMS_LOB.getlength(l_bfile));
  DBMS_LOB.fileclose(l_bfile);
  COMMIT;
EXCEPTIONWHEN OTHERS THENROLLBACK;
   RAISE;
END;
Este codigo funciona bien para la tabla ARCHIVOS. Pero no se como definir la ruta para la siguiente tabla (inspeccion) ni como insertar la informacion para los campos BLOB que en este caso son 2.
(
INT not null primary key,
DATE,
char (25) not null,
INT not null,
indicacion        char (30),
ubicacion      char (40),
foto                BLOB null,
perfil                                                        BLOB null,
Observaciones_insp                               char (200),
CONSTRAINT ClaveExtinspeccionnombre_equ FOREIGN KEY (equipo_i) REFERENCES equipos ON DELETE CASCADE,
CONSTRAINT ClaveExtinspeccionid_tecnica FOREIGN KEY (tecnica_i) REFERENCES tecnicas ON DELETE CASCADE);
CREATE SEQUENCE seq_inspeccion
start WITH 1
SELECT seq_inspeccion.NEXTVAL INTO :new.Id_i FROM dual;
Samauel espero que me pueda entender:
Tengo una tabla con un campo blob que funciona bien con el codigo del ejemplo que aparece aqui:
www.devjoker.com/asp/ver_contenidos.aspx?co_contenido=83
tengo una tabla con dos campos blob y no se como crear los directorios ni que modificaciones hacerle al codigo para insertar la informacion, me puedes ayudar con esto?
De antemano muchas gracias Samuel.
Si, disculpa, creo que con lo que te escribi arriba y ame puedes entender.
Ok lo primero por supuesto crear los objeto directorio
con las rutas dodne se encuentran los ficheros binarios,
como bien dice el enlace:
Create or replace
DIRECTORY AS '';
Create tantos objetos directorio como necesites, en este caso
con uno te bastaria que alverge los tipos de objetos blob pero si quieres
los puedes tener en varios directorios, esto es agusto del consumidor.
En cuanto al codigo si te refieres al PL/SQL te aconsejo que dupliques las variables por ejemplo si tienes: l_bfile usa l_bfile2 tambien duplica para optener las inserciones que te hacen falta.
Espero que te sirva, recuerda puntuar y cerrar la pregunta.
Me puedes dar otra pista para duplicar las inserciones por favor. gracias.
Para duplicar las inserciones lo que te comentaba se peude conseguir duplicando el codigo de insercion para un campo como te meustra el ejemplo, seria algo asi:
Declare
l_bfile BFILE;
l_blob BLOB;
l_bfile2 BFILE;
l_blob2 BLOB;
BEGIN
INSERT INTO ARCHIVOS
(CO_ARCHIVO, NOMBRE_ARCHIVO, BIN,BIN2, FX_ALTA)
VALUES
('000001','imagen.gif',EMPTY_BLOB(),EMPTY_BLOB(),SYSDATE)
RETURN BIN INTO l_blob,l_blob2;
l_bfile := BFILENAME('IMAGES', 'imagen.gif');
DBMS_LOB.fileopen(l_bfile, Dbms_Lob.File_Readonly);
DBMS_LOB.loadfromfile(l_blob,l_bfile,DBMS_LOB.getlength(l_bfile));
DBMS_LOB.fileclose(l_bfile);
l_bfile2 := BFILENAME('IMAGES', 'imagen2.gif');
DBMS_LOB.fileopen(l_bfile2, Dbms_Lob.File_Readonly);
DBMS_LOB.loadfromfile(l_blob2,l_bfile2,DBMS_LOB.getlength(l_bfile2));
DBMS_LOB.fileclose(l_bfile2);
COMMIT;
EXCEPTION WHEN OTHERS THEN
ROLLBACK;
RAISE;
END;
Espero que te sirva!. No te olvides de cerrar la pregunta y puntuarla.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas