我正在使用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-us和http://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参数。
非常感谢,
贾里德