Моя хранимая процедура не работает при вызове - PullRequest
0 голосов
/ 30 апреля 2019

Когда я вызываю эту процедуру из моего 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 голосов
/ 30 апреля 2019

Ваша процедура не компилируется

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 #, но я думаю, что это выглядит хорошо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...