Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Wie erhalte ich die generierte ID aus einer eingefügten Zeile mit ExecuteScalar?

Wenn Sie Oracle verwenden, müssen Sie ExecuteNonQuery und ResultParameter verwenden. Es gibt keine Möglichkeit, dies als Abfrage zu schreiben.

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