如何转换Oracle Command的返回值

时间:2017-09-11 14:28:43

标签: c# sql oracle casting

我正在使用此example从一个插页中获取自动数字。 工作正常,因为我可以看到"new_id"具有正确的值。但是在尝试转换为十进制或整数时出现错误。

  

System.InvalidCastException:'无法转换类型'Oracle.ManagedDataAccess.Types.OracleDecimal'以输入'System.IConvertible'。'

using (OracleCommand cmd = con.CreateCommand())
{
    cmd.CommandText = "INSERT INTO projects (name) values(:project_name) returning project_id into :new_id";
    cmd.Parameters.Add("project_name", OracleDbType.NVarchar2, ParameterDirection.Input);
    cmd.Parameters.Add("new_id", OracleDbType.Decimal, ParameterDirection.ReturnValue);
    cmd.ExecuteNonQuery();
    decimal result = Convert.ToDecimal(cmd.Parameters["new_id"].Value);
                     ^^^ error here
    return Convert.ToInt16(result);
}

DEBUG值:

enter image description here

0 个答案:

没有答案