我的存储过程在调用时不起作用

时间:2019-04-30 10:55:18

标签: c# oracle stored-procedures plsql

当我从C#代码中调用此过程时,该过程将不会执行。

我有两个参数-一个是输出参数,另一个是输入参数。

(Oracle SQL Developer)

SQL代码:

    PROCEDURE manual_process(j_cursor OUT outputcursor, p_manual_date                         
    VARCHAR2)
    IS

    BEGIN
    OPEN j_cursor FOR
    SELECT i.*, TO_CHAR((i.maturity_date - 1), 'dd-MM-YYYY') 
    yesterday_date
    FROM ntb_rpa_int_code_summary i
    WHERE trunc(rec_mntn_date) = p_manual_date
    AND rec_status = 'A'
    AND process_status='N';
    END;

Visual Studio代码(C#):

     OracleParameter[] param = { new OracleParameter("j_cursor", 
     OracleDbType.RefCursor), new OracleParameter("p_manual_date",OracleDbType.Varchar2)};

     param[0].Direction = System.Data.ParameterDirection.Output;
     param[1].Value = reg_date;

     DataSet accountDs = dbObj.RunProcedureOracle("ntb_rpa_intrst_rate_code_chnge.manual_process", param, "accTbl");

1 个答案:

答案 0 :(得分:0)

您的过程无法编译

PROCEDURE manual_process(j_cursor OUT outputcursor, p_manual_date
                                      ^^^^^^^^^^^^

PLS-00201: identifier 'OUTPUTCURSOR' must be declared

这将编译:

create or replace PROCEDURE manual_process(j_cursor OUT sys_refcursor, p_manual_date                         
    VARCHAR2)
    IS

    BEGIN
    OPEN j_cursor FOR
    SELECT i.*, TO_CHAR((i.maturity_date - 1), 'dd-MM-YYYY') 
    yesterday_date
    FROM ntb_rpa_int_code_summary i
    WHERE trunc(rec_mntn_date) = p_manual_date
    AND rec_status = 'A'
    AND process_status='N';
    END;

不确定它是否可以与您的C#程序一起使用,但我认为它看起来不错。