我有一个Oracle程序包,其中有一个程序:
PROCEDURE pGetData(pi_dStartDate IN date,
pi_dEndDate IN date,
po_curData OUT sys_refcursor,
po_nStatus OUT NUMBER,
po_sErrorText OUT VARCHAR2)
如您所见,有一个 sys_refcursor 输出参数。 我已经完成了链接中提到的以下步骤:EntityFrameworkOBE以使用Entityframwork添加过程。
但是当我" 添加功能"从模型浏览器中,我只获得4个参数来传递DBContext生成的代码中的函数。
public virtual ObjectResult<pGetData_Result> ProcGetData
(Nullable<System.DateTime> pI_DSTARTDATE,
Nullable<System.DateTime> pI_DENDDATE,
ObjectParameter pO_NSTATUS,
ObjectParameter pO_SERRORTEXT)
{
var pI_DSTARTDATEParameter = pI_DSTARTDATE.HasValue ?
new ObjectParameter("PI_DSTARTDATE", pI_DSTARTDATE) :
new ObjectParameter("PI_DSTARTDATE", typeof(System.DateTime));
var pI_DENDDATEParameter = pI_DENDDATE.HasValue ?
new ObjectParameter("PI_DENDDATE", pI_DENDDATE) :
new ObjectParameter("PI_DENDDATE", typeof(System.DateTime));
return ((IObjectContextAdapter)this).ObjectContext.ExecuteFunction<pGetData_Result>
("pGetData", pI_DSTARTDATEParameter, pI_DENDDATEParameter, pO_NSTATUS, pO_SERRORTEXT);
}
我无法通过&#34; Ref_Cursor &#34;,因此我收到错误:
&#34; ORA-06550:第1行第8列:\ nPLS-00306:调用&#39; PGETUTILTSINTILEDATA&#39; \ nORA-06550:第1行第8列的参数数目不正确: \ nPL / SQL:语句被忽略&#34;
请帮忙。
感谢。
答案 0 :(得分:2)
这是我尝试的正确方法。 代码没有返回值的唯一问题是我为我的EDMX文件创建了一个单独的类库。
解决这个问题:
转到EDMX文件的属性并设置&#34;复制到输出目录&#34;到&#34;始终复制&#34;。
如果您已将EDMX文件包含在主可执行应用程序的同一目录中,则不会出现任何问题,您可以执行我在上面定义的相同方法。