Procedimiento almacenado OUTPUT VARCHAR2 valor truncado con el cliente 12c

estoy usandooráculo 11g. Mi procedimiento almacenado está volviendovarchar2 pero su valor está siendo truncado pororacle client. Abajo está mi código:

            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;
                        }
                    }
                }

Incrementé elparam.size a4000 pero aún los valores se están truncando. Hay alguna solución para esto. En el servidor tengoOracle 12c. Necesito obtener una solución sin actualizar la versión del cliente Oracle en mi proyecto, ya que eso no está permitido debido a algunas razones.

A continuación se muestra el SP. Lo modifiqué para devolver valores codificados. Sigue siendo el mismo problema.

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;

Respuestas a la pregunta(2)

Su respuesta a la pregunta