【发布时间】:2011-08-05 04:06:34
【问题描述】:
我有一个 PL/SQL 存储过程,它接受一个 BLOB 参数(以及其他参数)并将 BLOB 插入到表中。如何将大(1MB 或更大)字节数组从 .NET 传递到存储过程。
【问题讨论】:
标签: .net oracle plsql blob odp.net
我有一个 PL/SQL 存储过程,它接受一个 BLOB 参数(以及其他参数)并将 BLOB 插入到表中。如何将大(1MB 或更大)字节数组从 .NET 传递到存储过程。
【问题讨论】:
标签: .net oracle plsql blob odp.net
当您设置您的 SP 查询(准备准备它)时,将参数的数据类型设置为 OracleDbType.Blob。
OracleParameter p = query.CreateParameter();
p.OracleDbType = OracleDbType.Blob;
p.Direction = ParameterDirection.Input;
然后在您运行查询之前,只需将参数的值设置为您提到的大 BLOB。
【讨论】:
从 Oracle 11.2/ODP.Net v2.112.1.2 开始,您不能传递 BLOBs 的数组。来自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。
【讨论】: