Получить значение возврата Oracle PL SQL Функция с NETCORE C# - PullRequest
0 голосов
/ 27 апреля 2020

Я хочу получить возвращаемое значение функции ORACLE (12 c) PL SQL с NETCORE C#

Я не могу получить возвращенное значение, и оно работает отлично на PL SQL Разработчик. Вот мой код:

public String GetFwdNickCodeFromCdCode(Int32 p_cd_code, string p_cd_code_type)
    {
        DataSet ds = new DataSet();
        String returnValue = String.Empty;
        try
        {
            List<OracleParameter> parameters = new List<OracleParameter>();
            var param_p_cd_code = new OracleParameter("p_cd_code", OracleDbType.Varchar2, 50, ParameterDirection.Input) { Value = p_cd_code.ToString() };
            parameters.Add(param_p_cd_code);
            var param_p_cd_code_type = new OracleParameter("p_cd_code_type", OracleDbType.Varchar2, 50, ParameterDirection.Input) { Value = p_cd_code_type };
            parameters.Add(param_p_cd_code_type);
            var param_result = new OracleParameter("result", OracleDbType.Varchar2, 100, ParameterDirection.ReturnValue);
            parameters.Add(param_result);

            returnValue = ExecuteFunctionOutPutParameterString("fwd.gx_cd_to_nick.fx_cd_code", parameters);
            return returnValue;
        }
        catch (Exception e)
        {
            throw e;
        }
        finally
        {
            base.ClosedConnection();
        }
    }

protected String ExecuteFunctionOutPutParameterString(string sp, List<OracleParameter> parameters = null)
    {
        //DataSet ds = new DataSet();
        String returnValue = String.Empty;
        try
        {
            using (OracleConnection connection = OpenConnection())
            {
                Connection = connection;

                using (OracleCommand command = new OracleCommand())
                {
                    command.Connection = connection;
                    command.CommandType = CommandType.StoredProcedure;
                    command.CommandText = sp;

                    if (parameters != null)
                    {
                        command.Parameters.AddRange(parameters.ToArray());
                    }
                    command.ExecuteNonQuery();
                    returnValue = command.Parameters["result"].ToString();
                }
            }
            ClosedConnection();
            return returnValue;
        }
        catch (Exception)
        {
            ClosedConnection();
            throw;
        }
    }

У вас есть правильный способ получить значение "результата"?

Заранее спасибо

...