【问题标题】:How to pass Oracle Ref_Cursor as output to the Entity Framework如何将 Oracle Ref_Cursor 作为输出传递给实体框架
【发布时间】:2015-05-18 09:07:54
【问题描述】:

我有一个 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);
    }

我无法通过“Ref_Cursor”,因此出现错误:

“ORA-06550:第 1 行,第 8 列:\nPLS-00306:调用 'PGETUTILTSINTILEDATA' 时参数的数量或类型错误\nORA-06550:第 1 行,第 8 列:\nPL/SQL:语句被忽略”

请帮忙。

谢谢。

【问题讨论】:

    标签: oracle entity-framework-5 sys-refcursor


    【解决方案1】:

    这是我尝试的正确方法。 唯一导致代码没有返回值的问题是我为我的 EDMX 文件创建了一个单独的类库。

    解决这个问题:

    转到 EDMX 文件的属性并将“复制到输出目录”设置为“始终复制”。

    如果您将 EDMX 文件包含在主可执行应用程序的同一目录中,则不会有任何问题,您可以执行我上面定义的相同方法。

    【讨论】:

    • 这似乎对我不起作用。您是否为 sys_refcursor OUT 参数传递了任何内容?
    猜你喜欢
    • 2019-01-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多