sql >> Base de Datos >  >> RDS >> Oracle

¿Cómo obtener la identificación generada de una fila insertada usando ExecuteScalar?

Si está en Oracle, debe usar ExecuteNonQuery y ResultParameter. No hay forma de escribir esto como consulta.

using (OracleCommand cmd = con.CreateCommand()) {
    cmd.CommandText = "insert into foo values('foo','bar') returning id into :myOutputParameter";
    cmd.Parameters.Add(new OracleParameter("myOutputParameter", OracleDbType.Decimal), ParameterDirection.ReturnValue);
    cmd.ExecuteNonQuery(); // an INSERT is always a Non Query
    return Convert.ToDecimal(cmd.Parameters["myOutputParameter"].Value);
}