У меня точно такая же проблема. У меня 12.2.0.1.0, и все же выходной Varchar усекается до "TR" для истины

ользуюоракул 11 г, Моя хранимая процедура возвращаетсяvarchar2 но это значение усекаетсяoracle client, Ниже мой код:

            if ((ds != null) && (ds.Tables.Count > 0))
                {

                    foreach (DataRow rw in ds.Tables[0].Rows)
                    {

                        OracleParameter param = new OracleParameter((rw["argument_name"]).ToString(), GetOracleType(rw["data_type"].ToString().ToUpper()));
                        param.Direction = GetParameterDirection((rw["in_out"]).ToString().ToUpper());
                        discoveryCommand.Parameters.Add(param);
                        if (param.Direction == ParameterDirection.Output && param.OracleType == OracleType.VarChar)
                        {
                            param.Size = 4000;
                        }
                    }
                }

Я увеличилparam.size в4000 но все же значения усекаются. Есть ли решение для этого. На сервере у меня естьOracle 12c, Мне нужно получить решение без обновления версии клиента oracle в моем проекте, так как это не разрешено по некоторым причинам.

Ниже SP. Я изменил его, чтобы вернуть жестко закодированные значения. Все та же проблема.

PROCEDURE access_level (
          p_emp_id IN  employees.emp_id%TYPE,
        p_id IN  NUMBER,
        p_type VARCHAR2,
          p_access_level OUT VARCHAR2
 ) IS
  BEGIN


 p_access_level := 'X' || 'RO' || 'RW';






 END IF;

Ответы на вопрос(2)

Ваш ответ на вопрос