0

我很难让我的 c# 代码运行存储过程并返回行,以便我可以在我的数据网格上显示。我搜索了该站点,发现其他人也有同样的问题,但我尝试了建议的修复程序,但仍然收到“调用中的参数数量或类型错误”错误。

这是我的存储过程代码

create or replace 
PROCEDURE GetData
(
  P_RECS OUT SYS_REFCURSOR,
  P_YEARLIST IN VARCHAR2
)
AS 
BEGIN  
 OPEN P_RECS FOR 
  select desc
  from emp_data
  where trim(SYear) in (P_YEARLIST)
  order by upper(trim(SYear)) asc ;
END GetData ;

这是我的 C# 代码

using (OracleCommand cmd = new OracleCommand("GetData", conn))
{
  cmd.CommandType = CommandType.StoredProcedure;

  OracleParameter opRefCur = new OracleParameter();
  opRefCur.ParameterName = "P_RECS";
  opRefCur.OracleDbType = OracleDbType.RefCursor;      
  opRefCur.Direction = ParameterDirection.ReturnValue;

  OracleParameter opYearList = new OracleParameter();
  opYearList.ParameterName = "P_YEARLIST";
  opYearList.OracleDbType = OracleDbType.Varchar2;
  opYearList.Value = '1973';
  opYearList.Direction = ParameterDirection.Input;

  cmd.Parameters.Add(opRefCur);
  cmd.Parameters.Add(opYearList);

  try
  {
    OracleDataReader dr = cmd.ExecuteReader();
  }
  catch (Exception ex)
  {

  }
}

这只是这个存储过程的开始。我必须添加更多参数。我确定这很简单,我已经多次查看代码但我无法更正它。任何帮助将不胜感激。

谢谢

4

0 回答 0