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:
Gracias de Antemano 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