使用devart dotConnect调用Oracle存储过程

| 我是Entity Framework的新手,正在尝试调用oracle存储过程,但未成功。所以这是我的问题: 如何使用devart dotConnect调用oracle存储过程? 例如,我有存储过程:
procedure get_problems(res out sys_refcursor) is
  begin

   open res 
   for
   select id, name
   from problems;  

  end;
从C#我想打电话给:
 using (Entities entities = new Entities())
 {
     ObjectParameter res = new ObjectParameter(\"res\", typeof(byte[]));
     ObjectResult<PROBLEM> problems = entities.SelectAllProblems(res);
 }
但是会抛出\“ EntityCommandExecutionException \”:   执行时发生错误   命令定义。见内在   详情除外。 这是内部的例外:   ORA-06550:第2行,第   3:\\ nPLS-00306:错误的数字或类型   的论点   \'GET_PROBLEMS \'\\ nORA-06550:第2行   第3列:\\ nPL / SQL:语句被忽略 我用了   \“ typeof(byte [])\” 作为ObjectParameter类型,因为我在Devart Entity Developer的生成代码中看到了这一点。 ps。顺便说一下,您如何在大型项目中推荐dotConnect?     
已邀请:
看看我们博客中的这篇文章。 您可以使用我们的论坛或反馈页面与我们联系。     
我知道这个问题是在不久前被问到的,但它可能会帮助其他人,因为我花了一些时间才弄清楚这一点。这是我们如何在包(P_SID)中调用存储的proc(SID_PGet)并使用DotConnect返回单个字符串值的方式。 (这仅返回一个值-我目前正试图找出如何返回sys_refcursor)。 这是存储的过程:
PROCEDURE SID_PGet(io_SID OUT varchar2) is
Begin
   io_SID:=GetSID; -- GetSID returns a unique varchar value
End;
在C#的DbContext中:
public string GetNextSId()
{
    var parameter = new Devart.Data.Oracle.OracleParameter(\"io_SID\", Devart.Data.Oracle.OracleDbType.VarChar, ParameterDirection.Output);
    this.Database.ExecuteSqlCommand(\"BEGIN P_SID.SID_PGet(:io_SID); END;\", parameter);
    var sid = parameter.Value as string;

    return sid;
}
    

要回复问题请先登录注册