使用 DBFactory 和 Oracle 存储过程 sys ref cursor 返回数据集

Posted

技术标签:

【中文标题】使用 DBFactory 和 Oracle 存储过程 sys ref cursor 返回数据集【英文标题】:Returning Dataset using DBFactory and Oracle Stored Procedure sys ref cusror 【发布时间】:2012-01-23 23:31:03 【问题描述】:

我正在尝试使用 ODP.NET 提供程序和 DBFactory 从 oracle 引用游标返回数据集。 调用此函数时出现以下错误:

Invalid parameter binding
Parameter name: io_cursor

代码:

Dim dbManager As DBManager = New DBManager(ORACONN)
        Dim ds As New DataSet()

        Dim cmd As DbCommand = dbManager.CreateCommand()
        cmd.CommandText = "SP_NAME"

        Dim param As DbParameter = cmd.CreateParameter()
        param.ParameterName = "io_cursor"
        param.Value = Nothing
        param.DbType = DbType.Object
        param.Direction = ParameterDirection.Output
        cmd.Parameters.Add(param)

        Dim da = dbManager.CreateDataAdaptor()
        da.SelectCommand = cmd
        da.Fill(ds)
        Return ds

我在这里缺少什么? DbType.Object 是否适用于 OracleDbType.RefCursor 类型?

【问题讨论】:

【参考方案1】:

我不认为使用 DbType.Object 会起作用。我认为您应该改用 OracleDbType.RefCursor。

Documentation and example (C#)

【讨论】:

谢谢,是的,我知道,我正在创建一个独立于提供者的数据访问层。而且您不能将 param.DBType 设置为 Refcursor。

以上是关于使用 DBFactory 和 Oracle 存储过程 sys ref cursor 返回数据集的主要内容,如果未能解决你的问题,请参考以下文章

oracle job使用 我想数据库每隔十分钟执行一次存储过程A,怎么写,本人小白,没用过job,想大神们求解

如何在ORACLE存储过程中调用WEBSERVICE函数

从连接 Firebird 读取数据时出错

oracle存储过程

oracle存储过程

Oracle存储过程的编写经验与优化措施