Oracle
 sql >> Base de données >  >> RDS >> Oracle

Comment obtenir l'identifiant généré à partir d'une ligne insérée à l'aide d'ExecuteScalar ?

Si vous êtes sur oracle, vous devez utiliser ExecuteNonQuery et ResultParameter. Il n'y a aucun moyen d'écrire ceci en tant que requête.

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