在Oracle数据库12c中调用存储过程时,我得到无效的SQL语句

6psbrbz9  于 2023-10-16  发布在  Oracle
关注(0)|答案(1)|浏览(117)

我在Oracle数据库12c中有一个存储过程,其中有参数输入和输出,当我运行代码时,我得到一个SQL无效的错误。
这是我的代码:

using (OracleConnection connection = new OracleConnection(_connection.ConnectionString))
{  
    var parameters = new OracleDynamicParameters();
    parameters.Add("in_RQ_SALES_REQUEST", OracleDbType.Int32 ,ParameterDirection.Input , 14478);
    parameters.Add("in_RQ_AMOUNT", OracleDbType.Int32 ,ParameterDirection.Input , 2500);
    parameters.Add("in_RQ_CURRENCY", OracleDbType.Char ,ParameterDirection.Input ,"YER", 3);
    parameters.Add("in_RQ_TP_CHANNEL", OracleDbType.Char ,ParameterDirection.Input ,"APP", 3);
    parameters.Add("in_RQ_ACC_TYPE", OracleDbType.Varchar2 ,ParameterDirection.Input ,"SUB"); 
    parameters.Add("in_RQ_MAIN_SRVC_ID", OracleDbType.Int32 ,ParameterDirection.Input ,1);
    parameters.Add("in_RQ_SUB_SRVC_ID", OracleDbType.Int32 ,ParameterDirection.Input ,1);  
    parameters.Add("in_RQ_INTERNAL_EXTRA1", OracleDbType.Varchar2 ,ParameterDirection.Input ,"123456"); 
    parameters.Add("in_RQ_INTERNAL_EXTRA2", OracleDbType.Varchar2 ,ParameterDirection.Input ,"775550902"); 
 
    // Add the out parameters to the OracleDynamicParameters object.
    parameters.Add("P_OUT_RESULT", OracleDbType.Int32, ParameterDirection.Output);
    parameters.Add("P_OUT_RESULT_DESC", OracleDbType.Varchar2, ParameterDirection.Output);

    // Call the stored procedure.
    var result = connection.Execute("SP_INIT_SALES_REQUEST", parameters);

    // Retrieve the out parameter values from the OracleDynamicParameters object.
    // int outResult = parameters["out_Result"].Value<int>();
    // string outResultDesc = parameters["out_Result_Desc"].Value<string>();

    // Close the connection.
    connection.Close();

    return Ok("result =>" + result.ToString());
}

我无法得到out params:

// Retrieve the out parameter values from the OracleDynamicParameters object.
// int outResult = parameters["out_Result"].Value<int>();
// string outResultDesc = parameters["out_Result_Desc"].Value<string>();

我试了很多次,但都出错了


enter image description here

ig9co6j1

ig9co6j11#

您需要添加commandType: CommandType.StoredProcedure

// Call the stored procedure.
    var result = connection.Execute("SP_INIT_SALES_REQUEST", parameters, commandType: CommandType.StoredProcedure);

相关问题