c# - c# oracle: 在插入后获取 RowId
问题描述
各位亲爱的,
我试图在插入后返回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中的结果
提前致谢。
解决方案
以下是使用 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");