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

问题描述 投票:0回答:1

我在 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());
}

我无法获取输出参数:

// 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

oracle asp.net-core dapper
1个回答
0
投票

您需要添加

commandType: CommandType.StoredProcedure

    // Call the stored procedure.
    var result = connection.Execute("SP_INIT_SALES_REQUEST", parameters, commandType: CommandType.StoredProcedure);
© www.soinside.com 2019 - 2024. All rights reserved.