2

プロジェクトで Oracle と共に Entity Framework を使用しており、EF からストアド プロシージャを呼び出そうとしています。手順は次のとおりです。

Create or Replace Procedure usp_RotaPlateProductie_Select(
    p_afdelingId in varchar2,
    p_productTypeId in varchar2,
    p_productieData out sys_refcursor)
IS 
Begin
    Open p_productieData for
        Select rp.Batchnummer, cppo.Productnummer, p.Omschrijving, pra.Bruto_In_Meters
        From Rotaplateproductie rp inner join Productieresultaatrtplrol pra
        on rp.Batchnummer = pra.Batchnummer inner join Cpiplusproductieorder cppo
        on pra.ProductieNummer = cppo.ProductNummer inner join Product p
        on cppo.Productnummer = p.Productnummer Where rp.Afdelingid = p_afdelingId
        and rp.producttype = p_productTypeId; 
END;

しかし、EFが関数を実行すると、以下のエラーが発生します

ORA-06550: line 1, column 8:
PLS-00306: wrong number or types of arguments in call to 'USP_ROTAPLATEPRODUCTIE_SELECT.
ORA-06550: line 1, column 8:
PL / SQL: Statement IGNORED.

以下のコードを使用してこの手順を呼び出しています

public ObjectResult<RotaPlateProductie> Search_RotaPlateProductie(global::System.String p_AFDELINGID, global::System.String p_PRODUCTTYPEID)
    {
        ObjectParameter p_AFDELINGIDParameter;
        if (p_AFDELINGID != null)
        {
            p_AFDELINGIDParameter = new ObjectParameter("P_AFDELINGID", p_AFDELINGID);
        }
        else
        {
            p_AFDELINGIDParameter = new ObjectParameter("P_AFDELINGID", typeof(global::System.String));
        }

        ObjectParameter p_PRODUCTTYPEIDParameter;
        if (p_PRODUCTTYPEID != null)
        {
            p_PRODUCTTYPEIDParameter = new ObjectParameter("P_PRODUCTTYPEID", p_PRODUCTTYPEID);
        }
        else
        {
            p_PRODUCTTYPEIDParameter = new ObjectParameter("P_PRODUCTTYPEID", typeof(global::System.String));
        }

        return base.ExecuteFunction<RotaPlateProductie>("Search_RotaPlateProductie", p_AFDELINGIDParameter, p_PRODUCTTYPEIDParameter);
    }

ここで RotaPlateProductie は、結果セットをバインドしているエンティティです。助けてください。

4

1 に答える 1

2

構成を追加する必要があります。iIn の場合は次のようになります。

<oracle.dataaccess.client
    <settings>
      <add name="rp.usp_RotaPlateProductie_Select.RefCursor.p_productieData" value="implicitRefCursor bindinfo='mode=Output'" />...
   <settings>
</oracle.dataaccess.client
于 2012-08-01T07:54:30.177 に答える