我有一个PL / SQL存储过程接受BLOB参数(以及其他参数)并执行BLOB到表中的插入。如何将大型(1MB及更大)字节数组从.NET传递到存储过程。
答案 0 :(得分:2)
从Oracle 11.2 / ODP.Net v2.112.1.2开始,您无法传递BLOB
的数组。来自Oracle® Data Provider for .NET Developer's Guide 11g Release 2 (11.2.0.3), PL/SQL Associative Array Binding:
... ODP.NET支持PL / SQL关联数组的绑定参数 其中包含以下数据类型。
BINARY_FLOAT CHAR DATE NCHAR NUMBER NVARCHAR2 RAW ROWID UROWID VARCHAR2
将不受支持的数据类型与关联数组一起使用可能会导致ORA-600错误。
另请注意:Oracle Forums: Passing Associative Array of BLOBs Not Supported。
答案 1 :(得分:0)
当您设置SP查询(准备好准备它)时,请将参数的数据类型设置为OracleDbType.Blob
。
OracleParameter p = query.CreateParameter();
p.OracleDbType = OracleDbType.Blob;
p.Direction = ParameterDirection.Input;
然后在运行查询之前,只需将参数的值设置为您提到的大BLOB。