首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用devart dotConnect调用Oracle存储过程

使用devart dotConnect调用Oracle存储过程
EN

Stack Overflow用户
提问于 2011-04-15 08:16:29
回答 2查看 4.8K关注 0票数 2

我是实体框架的新手,试图调用oracle存储过程,但没有成功。所以我的问题是:

如何使用devart dotConnect调用oracle存储过程?

例如,我有存储过程:

代码语言:javascript
运行
复制
procedure get_problems(res out sys_refcursor) is
  begin

   open res 
   for
   select id, name
   from problems;  

  end;

从C#,我打电话给:

代码语言:javascript
运行
复制
 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_ column’\Nora-06550:第2行,第3列:\nPL/SQL:忽略语句的错误数量或类型

我用过

“类型(byte[])”

作为ObjectParameter类型,因为我在Devart实体开发人员生成的代码中看到了这一点。

附注:顺便问一下,您将如何在大型项目中推荐dotConnect?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-04-15 12:59:04

在我们的博客中查看一下这篇文章

您可以使用我们的论坛反馈页与我们联系。

票数 0
EN

Stack Overflow用户

发布于 2012-05-23 09:09:14

我知道这是在一段时间前提出的,但这可能会对其他人有所帮助,因为我花了一段时间才弄明白这一点。下面是如何在包(P_SID)中调用存储的proc (SID_PGet),并使用DotConnect返回单个字符串值。(这只返回一个值--我目前正在试图了解如何返回一个sys_refcursor)。

以下是存储的过程:

代码语言:javascript
运行
复制
PROCEDURE SID_PGet(io_SID OUT varchar2) is
Begin
   io_SID:=GetSID; -- GetSID returns a unique varchar value
End;

在DbContext in C#中:

代码语言:javascript
运行
复制
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;
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5674074

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档