我正在尝试使用 Dapper.Net 调用存储过程并获取返回值。
p.Add("@INCIDENT_ID", dbType: DbType.Int32, direction: ParameterDirection.ReturnValue);
var retResults = con.Execute("usp_GetIncidentID", p, commandType:CommandType.StoredProcedure);
int IncidentID = p.Get<int>("INCIDENT_ID");
我尝试了几种不同的参数方向和使用 "@INCIDENT_ID"
。如果您逐步查看结果,您会发现正确的返回值出现在 retResults
值中,但我无法按照文档中描述的方式访问这些值。
存储过程 Dapper 支持完全存储过程:
var user = cnn.Query<User>("spGetUser", new {Id = 1},
commandType: CommandType.StoredProcedure).First();}}}
If you want something more fancy, you can do:
var p = new DynamicParameters();
p.Add("@a", 11);
p.Add("@b", dbType: DbType.Int32, direction: ParameterDirection.Output);
p.Add("@c", dbType: DbType.Int32, direction: ParameterDirection.ReturnValue);
cnn.Execute("spMagicProc", p, commandType: commandType.StoredProcedure);
int b = p.Get<int>("@b");
int c = p.Get<int>("@c");
var IncidentID = con.Query<int>("usp_GetIncidentID",commandType:CommandType.StoredProcedure).SingleOrDefault();
如果你的存储过程是通过“select”返回值,那么这是最简单的方法且可行。 - user1625066