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 № 1A partir de Oracle 11.2 / ODP.Net v2.112.1.2, no puede pasar una matriz de BLOB
s. 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.