c # oracle: получить вставку после RowId - PullRequest
0 голосов
/ 08 ноября 2018

Уважаемые все,

Я пытаюсь вернуть Oracle RowId после вставки, но результат всегда равен нулю (даже если вставка верна). Зачем? Что не так?

Здесь ниже вы можете найти код:

cmd.CommandType = CommandType.Text;
cmd.AddParameter("ROWINSERTED", string.Empty, DBTypes.NVarchar2, ParameterDirection.InputOutput);
cmd.CommandText = $@"INSERT INTO EQUIPVAR(ID_VAR, ID_QU, XTGYREVAVALUE) VALUES(1, 1, 'TEST') RETURNING rowid INTO :ROWINSERTED";                
var res = cmd.ExecuteScalar();

Я жду результата внутри параметра ROWINSERTED

Заранее спасибо.

1 Ответ

0 голосов
/ 08 ноября 2018

Вот как вы можете это сделать с помощью Dapper (пакет nuget):

DynamicParameters parameters = new DynamicParameters();
parameters.Add("out_id", dbType: DbType.Decimal, direction: ParameterDirection.Output);
database.Execute($@"INSERT INTO EQUIPVAR(ID_VAR, ID_QU, XTGYREVAVALUE) VALUES(1, 1, 'TEST') RETURNING rowid INTO :out_id", parameters);
int id = (int)parameters.Get<decimal>("out_id");
...