Oracle ref_cursor的.NET OdbcCommand参数

时间:2014-09-05 19:33:13

标签: c# .net oracle plsql odbc

我正在使用Oracle数据库后端在C#中开发一个ASP.NET Web应用程序项目。目前我们的应用程序正在使用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字符串的参考:http://support.microsoft.com/kb/255043/en-ushttp://msdn.microsoft.com/en-us/library/system.data.odbc.odbccommand.commandtext(v=vs.110).aspx

我想弄清楚ODBC的粗线的语法是什么。这是我在StackOverflow上发现的帖子:What is the proper odbc command for calling Oracle stored procedure with parameters from .Net?,但我试图找出.NETs ODBC提供程序是否支持接收ref_cursor。

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

非常感谢,

贾里德

0 个答案:

没有答案