У меня точно такая же проблема. У меня 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;