Tema: campo BLOB
Ver Mensaje Individual
  #1 (permalink)  
Antiguo 09/11/2007, 17:02
pineda
 
Fecha de Ingreso: septiembre-2005
Mensajes: 73
Antigüedad: 19 años, 6 meses
Puntos: 0
campo BLOB

Estoy realizando una aplicación con .NET y ORACLE.

La situación es la siguiente: trato de insertar en la BD un campo de tipo blob, pero no encuentro como, ya he hecho varios intentos y nada.

He encontrado varios ejemplos pero todos usan procedimientos un poco diferentes a lo que intento:

dim cmd as oraclecommand(sSQL, conexion)
cmd.parameters.add("TipoBlob", oracletype.blob).value= arreglodebytes
cmd.Executenonquery()

He intentado con todos los tipos ORACLETYPE y con todos me marca error.

La cosa es que con SQL se le asigna un arreglo de bytes al parametro, pero en Oracle, por los ejemplos que he visto debe ser un tipo ORACLELOB.
Por algunas razones me es un poco difícil agregar validaciones de que cuando sea un campo de tipo BLOB me haga el procedimiento que he visto.

No se si me pudieran ayudar para ver si puedo hacer lo que quiero o debe de hacer los procedimientos que he encontrado

Código:
Un ejemplo:
DECLARE  l_bfile  BFILE;
l_blob   BLOB;BEGIN  INSERT INTO ARCHIVOS    (CO_ARCHIVO, NOMBRE_ARCHIVO, BIN, FX_ALTA)  VALUES    ('000001','imagen.gif',EMPTY_BLOB(),SYSDATE)  RETURN BIN INTO l_blob;
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);
COMMIT; 
EXCEPTION WHEN OTHERS THEN   ROLLBACK;
RAISE;END;


Otro:
cmd.CommandText = "declare xx blob; begin dbms_lob.createtemporary(xx, false, 0);
:tempblob := xx; end;"
cmd.Parameters.Add(New OracleParameter("tempblob", OracleType.Blob)).Direction = ParameterDirection.Output
cmd.ExecuteNonQuery()
Dim tempLob As OracleLob
tempLob = cmd.Parameters(0).Value
tempLob.BeginBatch(OracleLobOpenMode.ReadWrite)
tempLob.Write(tempBuff, 0, tempBuff.Length)
tempLob.EndBatch()
cmd.Parameters.Clear()
cmd.CommandText = "InsertBlob.TestBlobInsert"
cmd.CommandType = CommandType.StoredProcedure
cmd.Parameters.Add(New OracleParameter("BlobParam", OracleType.Blob)).Value = tempLob
Gracias de Antemano
__________________
Henry :-D