Foros del Web » Programación para mayores de 30 ;) » .NET »

campo BLOB

Estas en el tema de campo BLOB en el foro de .NET en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 09/11/2007, 17:02
 
Fecha de Ingreso: septiembre-2005
Mensajes: 73
Antigüedad: 18 años, 7 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
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 22:43.