C# Oracle参考光标的.NET OdbcCommand参数

C# Oracle参考光标的.NET OdbcCommand参数,c#,.net,oracle,plsql,odbc,C#,.net,Oracle,Plsql,Odbc,我正在用C编写一个ASP.NET web应用程序项目,该项目带有Oracle db后端。目前,我们的应用程序正在使用Oracle的ODP.NET,因为Microsoft的System.Data.OracleClient已被删除。我们的测试和生产服务器存在兼容性问题,因此我们正在创建应用程序的ODBC版本。我在CommandText和为OdbcCommand添加参数方面遇到问题。以下是我为ODP.NET提供的信息: using (OracleCommand cmd = new OracleComm

我正在用C编写一个ASP.NET web应用程序项目,该项目带有Oracle db后端。目前,我们的应用程序正在使用Oracle的ODP.NET,因为Microsoft的System.Data.OracleClient已被删除。我们的测试和生产服务器存在兼容性问题,因此我们正在创建应用程序的ODBC版本。我在CommandText和为OdbcCommand添加参数方面遇到问题。以下是我为ODP.NET提供的信息:

using (OracleCommand cmd = new OracleCommand())
{
    cmd.CommandType = CommandType.StoredProcedure;
    cmd.CommandText = "oracle_pkg.sproc_name";
    cmd.Parameters.Add("param1", txtbox1.Text);
    cmd.Parameters.Add("param2", txtbox2.Text);
    cmd.Parameters.Add(new OracleParameter("o_refcursor", OracleDbType.RefCursor, ParameterDirection.Output));
    cmd.Connection = UHFUtility.GetDBConnection();
    OracleDataAdapter oda = new OracleDataAdapter(cmd);
}

using (OdbcCommand cmd = new OdbcCommand())
{
    cmd.CommandType = CommandType.StoredProcedure;
    cmd.CommandText = "{ ?= call oracl_pkg.sproc_name( ?, ?) }";
    cmd.Parameters.Add("p_start_date", txtFromDate.Text);
    cmd.Parameters.Add("p_end_date", txtToDate.Text);
    **cmd.Parameters.Add(new OdbcParameter("o_rc", OdbcType.Something, ParameterDirection.Output));**
    cmd.Connection = UHFUtility.GetMetricsDBConnection();
    OdbcDataAdapter oda = new OdbcDataAdapter(cmd);
}
我使用这两个网页作为参考来创建CommandText字符串:和

我试图找出ODBC粗体行的语法应该是什么。下面是我在StackOverflow上找到的一篇文章:,但我正在尝试找出.NETs ODBC提供程序是否支持接收ref_游标

我不确定CommandText应该如何形成,特别是因为我有一个SYS_REFCURSOR作为存储过程的out参数

非常感谢,


Jared

在过去,我发现Oracle和ODBC并不总是很好地结合在一起。例如,ODBC在一个with子句上崩溃了。任何不是标准的select-from的东西都可能破坏ODBC,这并不奇怪。它没有回答你的问题,但是你能详细说明一下ODP.net的兼容性问题吗?它应该可以在Oracle的不同版本/实例中正常工作。我们遇到了这个错误:提供商与Oracle客户端的版本不兼容,我一直在与管理员合作,我们尝试了一些在internet上找到的解决方案,但都没有效。我所知道的唯一细节是,我们正在测试web服务器上运行OracleClient 11.2.x.x 64位,我使用的是64位ODP.NET等等。我不太清楚还发生了什么。在我的开发站上,一切都很好,当我部署到测试服务器时,我们会遇到这个兼容性错误。。。请改为尝试托管ODP.net。它不依赖于本地安装的Oracle客户端。