【问题标题】:ODP.NET Pass large byte array to PL/SQL stored procedure accepting blobODP.NET 将大字节数组传递给接受 blob 的 PL/SQL 存储过程
【发布时间】:2011-08-05 04:06:34
【问题描述】:

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

【问题讨论】:

    标签: .net oracle plsql blob odp.net


    【解决方案1】:

    当您设置您的 SP 查询(准备准备它)时,将参数的数据类型设置为 OracleDbType.Blob

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

    然后在您运行查询之前,只需将参数的值设置为您提到的大 BLOB。

    【讨论】:

      【解决方案2】:

      从 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

      【讨论】:

        猜你喜欢
        • 2017-10-24
        • 2012-03-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-09-13
        • 2014-02-26
        • 2014-08-29
        • 1970-01-01
        相关资源
        最近更新 更多