/ / ODP.NET Pase la matriz de bytes grande al procedimiento almacenado PL / SQL que acepta blob - .net, oracle, plsql, blob, odp.net

ODP.NET Pasa una matriz de bytes grande a un procedimiento almacenado PL / SQL que acepta blob - .net, oracle, plsql, blob, odp.net

Tengo un procedimiento almacenado PL / SQL que acepta un BLOBArgumento (entre otros argumentos) y ejecuta una inserción del BLOB en una tabla. ¿Cómo puedo pasar una matriz de bytes grande (1 MB y mayor) de .NET al procedimiento almacenado?

Respuestas

2 para la respuesta № 1

A partir de Oracle 11.2 / ODP.Net v2.112.1.2, no puede pasar una matriz de BLOBs. Desde Oracle® Data Provider para .NET Developer "s Guide 11g Release 2 (11.2.0.3), PL / SQL Associative Array Binding:

... ODP.NET admite parámetros de enlace de matrices asociativas PL / SQL que contienen los siguientes tipos de datos.

  BINARY_FLOAT
CHAR
DATE
NCHAR
NUMBER
NVARCHAR2
RAW
ROWID
UROWID
VARCHAR2

El uso de tipos de datos no compatibles con matrices asociativas puede causar un error ORA-600.

Nota también: Foros de Oracle: Pasar una matriz asociativa de BLOB no es compatible.


0 para la respuesta № 2

Cuando esté configurando su consulta de SP (preparándose para prepararla), configure el tipo de datos del parámetro en OracleDbType.Blob.

OracleParameter p = query.CreateParameter();
p.OracleDbType = OracleDbType.Blob;
p.Direction = ParameterDirection.Input;

Luego, justo antes de ejecutar la consulta, simplemente establezca el valor del parámetro en el BLOB grande que está mencionando.