这是我在MySQL中的SP
CREATE PROCEDURE `GetMemberID`(
IN uname VARCHAR(128),
OUT MemberID INT
)
BEGIN
SELECT ID INTO MemberID FROM `Member` Where username = uname;
END我正在调用使用Pomelo的.netcore web项目中的SP。
var usernameParam = new MySqlParameter
{
ParameterName = $"@uname",
DbType = DbType.String,
Direction = ParameterDirection.Input,
Value = "test"
};
var memberIDParam = new MySqlParameter
{
ParameterName = $"@MemberID",
DbType = DbType.Int32,
Direction = ParameterDirection.Output
};
rContext.Database.ExecuteSqlRaw($"Call GetMemberID (@uname=@uname, @MemberID=@MemberID OUT)"
, usernameParam , memberIDParam);当使用输出参数时,我将得到以下错误。
当ParameterDirection.Input是文本时,只支持CommandType (参数名:@MemberID)
如何传递输出参数?
发布于 2020-02-21 09:15:52
这是github中的一个已知的问题,就像mguinness评论的那样
‘t不指定CommandType,因此它默认为CommandType.Text,这意味着输出参数不能工作。
这里有一个解决办法,您可以参考
using (MySqlConnection lconn = new MySqlConnection(Configuration.GetConnectionString("DefaultConnection")))
{
lconn.Open();
using (MySqlCommand cmd = new MySqlCommand())
{
cmd.Connection = lconn;
cmd.CommandText = "GetMemberID"; // The name of the Stored Proc
cmd.CommandType = CommandType.StoredProcedure; // It is a Stored Proc
cmd.Parameters.AddWithValue("@uname", "sherry");
cmd.Parameters.Add("@MemberID", MySqlDbType.Int32);
cmd.Parameters["@MemberID"].Direction = ParameterDirection.Output; // from System.Data
cmd.ExecuteNonQuery();
Object obj = cmd.Parameters["@MemberID"].Value;
var lParam = (Int32)obj; // more useful datatype
}
}https://stackoverflow.com/questions/60321681
复制相似问题