我是实体框架的新手,试图调用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_ column’\Nora-06550:第2行,第3列:\nPL/SQL:忽略语句的错误数量或类型
我用过
“类型(byte[])”
作为ObjectParameter类型,因为我在Devart实体开发人员生成的代码中看到了这一点。
附注:顺便问一下,您将如何在大型项目中推荐dotConnect?
发布于 2011-04-15 12:59:04
在我们的博客中查看一下这篇文章。
您可以使用我们的论坛或反馈页与我们联系。
发布于 2012-05-23 09:09:14
我知道这是在一段时间前提出的,但这可能会对其他人有所帮助,因为我花了一段时间才弄明白这一点。下面是如何在包(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;在DbContext in C#中:
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;
}https://stackoverflow.com/questions/5674074
复制相似问题