簡體   English   中英

呼叫中 arguments 的數量或類型錯誤

[英]wrong number or types of arguments in call

我認為 output 參數代碼有問題。但我不知道如何解決這個問題。誰能告訴我代碼中的問題是什么?

錯誤:

ORA-06550:第 1 行,第 7 列:PLS-00306:調用“SP_WF_GET_REQUESTDETAILS”時 arguments 的數量或類型錯誤 ORA-06550:第 1 行,第 7 列:PL/SQL:語句被忽略

我的代碼

public DataResponse<DataTable> GetRequestCount(string Usercode)
{
    try
    {
        var paramList = new List<OracleParameter>();
        paramList.Add(new OracleParameter("P_IN_KEY", "GET_REQUEST_COUNT"));
        paramList.Add(new OracleParameter("P_USER_CODE", Usercode));
        OracleParameter param = new OracleParameter("P_OUT_OPEN", OracleType.Cursor);
        OracleParameter param1 = new OracleParameter("P_OUT_APPROVED", OracleType.Cursor);
        OracleParameter param2 = new OracleParameter("P_OUT_REJECTED", OracleType.Cursor);
        param.Direction = ParameterDirection.Output;
        param1.Direction = ParameterDirection.Output;
        param2.Direction = ParameterDirection.Output;
        paramList.Add(param);
        paramList.Add(param1);
        paramList.Add(param2);
        var data = SPExcute("SP_WF_GET_REQUESTDETAILS", paramList);
        return data;  
    }
    catch (Exception ex)
    {
        ex.LogInfo();
        return new DataResponse<DataTable>(DataResponseCode.InvaildInputs);
    }
}

我的存儲過程

create or replace PROCEDURE SP_WF_GET_REQUESTDETAILS (P_IN_KEY      IN VARCHAR2,
                                                  P_USER_CODE varchar2,
                                                  P_OUT_OPEN OUT SYS_REFCURSOR,
                                                  P_OUT_APPROVED OUT SYS_REFCURSOR,
                                                  P_OUT_REJECTED OUT SYS_REFCURSOR,
                                                  P_OUT_TBL OUT SYS_REFCURSOR) AS 
BEGIN
    IF P_IN_KEY='GET_OPENREQUEST' THEN
    BEGIN
      OPEN P_OUT_TBL FOR
      SELECT A.REQUEST_NO AS Request_No,
        A.REQUEST_DATE AS Request_Date,
        A.CATEGORY_CODE AS Category_Code,
        A.STATUS AS Status
        FROM WF_TBL_TRN_REQUEST_HEADER A
        WHERE A.CREATED_BY=P_USER_CODE AND (A.STATUS='OPEN' OR A.STATUS like 'APPROVE LEVEL%');      
    END;
    ELSIF P_IN_KEY='GET_APROVEDREQUEST' THEN 
      BEGIN
        OPEN P_OUT_TBL FOR
          SELECT A.REQUEST_NO AS Request_No,
            A.REQUEST_DATE AS Request_Date,
            A.CATEGORY_CODE AS Category_Code,
            A.STATUS AS Status
          FROM WF_TBL_TRN_REQUEST_HEADER A
            WHERE A.CREATED_BY=P_USER_CODE AND (A.STATUS='APPROVED');   
    END;
    ELSIF P_IN_KEY='GET_REJECTEDREQUEST' THEN
       BEGIN
        OPEN P_OUT_TBL FOR
          SELECT A.REQUEST_NO AS Request_No,
            A.REQUEST_DATE AS Request_Date,
            A.CATEGORY_CODE AS Category_Code,
            A.STATUS AS Status
          FROM WF_TBL_TRN_REQUEST_HEADER A
            WHERE A.CREATED_BY=P_USER_CODE AND (A.STATUS='REJECTED' OR A.STATUS like 'REJECTED LEVEL%');  
    END;
    ELSIF P_IN_KEY='GET_REQUEST_COUNT' THEN
      BEGIN
        OPEN P_OUT_OPEN FOR
          SELECT COUNT(*) Open_Request_Count FROM WF_TBL_TRN_REQUEST_HEADER A WHERE A.CREATED_BY=P_USER_CODE AND (A.STATUS='OPEN' OR A.STATUS like 'APPROVE LEVEL%');
      END;
      BEGIN
        OPEN P_OUT_APPROVED FOR
          
          SELECT COUNT(*) Approved_Request_Count FROM WF_TBL_TRN_REQUEST_HEADER A WHERE A.CREATED_BY=P_USER_CODE AND (A.STATUS='APPROVED');
          
      END;
      BEGIN
        OPEN P_OUT_REJECTED FOR
          
          SELECT COUNT(*) Rejected_Request_Count FROM WF_TBL_TRN_REQUEST_HEADER A WHERE A.CREATED_BY=P_USER_CODE AND (A.STATUS='REJECTED' OR A.STATUS like 'REJECTED LEVEL%');
      END;
    END IF;
END SP_WF_GET_REQUESTDETAILS;

這是我完整的存儲過程

您的 SP 第 2 行不應該從“P_USER_CODE varchar2”更改為“P_USER_CODE IN varchar2”嗎?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM