ODP.NET将大字节数组传递给接受blob的PL / SQL存储过程

时间:2011-04-14 00:53:43

标签: .net oracle plsql blob odp.net

我有一个PL / SQL存储过程接受BLOB参数(以及其他参数)并执行BLOB到表中的插入。如何将大型(1MB及更大)字节数组从.NET传递到存储过程。

2 个答案:

答案 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。