【问题标题】:My stored procedure isn't working when called我的存储过程在调用时不起作用
【发布时间】:2019-09-19 00:38:26
【问题描述】:

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

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

(Oracle SQL 开发人员)

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");

【问题讨论】:

  • 只是这个存储过程不起作用吗?其他存储过程是否有效?
  • 你试过在sql中执行storedprocedure,它在那里工作吗?
  • 其他程序确实有效,但调用时这个程序无效
  • 此 sql 代码在 SQL Navigator 中有效,但在 ORACLE sql developer 中无效
  • 当您说“不起作用”时,您的实际意思是什么?您收到 Oracle 错误吗?一个空的结果集? C# 异常?另外,为什么将输入数据作为字符串而不是日期传递?从trunc(rec_mntn_date) 我猜你是在比较它和一个日期列。

标签: c# oracle stored-procedures plsql


【解决方案1】:

你的程序没有编译

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# 程序,但我认为它看起来不错。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-11
    • 2017-03-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多