我正在mySQL中使用我的第一个存储过程,如下所示:
CREATE DEFINER=`pubuducg`@`%` PROCEDURE `IsUserExists`(IN LoginEmail varchar(100))
BEGIN
SELECT LOGIN_USER_ID AS USERS
FROM login
WHERE LOGIN_EMAIL = @LoginEmail;
END
我正在C#ASP.net中按如下方式调用该过程:
if (oMySQLConnecion.State == System.Data.ConnectionState.Open)
{
MySqlCommand oCommand = new MySqlCommand("IsUserExists", oMySQLConnecion);
oCommand.CommandType = System.Data.CommandType.StoredProcedure;
oCommand.Parameters.AddWithValue("@LoginEmail", UserEmail.EmailAddress);
var sqlResult = oCommand.ExecuteReader();
userExists = (sqlResult.HasRows ? true : false);
oMySQLConnecion.Close();
}
如果我手动执行SQL语句:
SELECT LOGIN_USER_ID AS USERS
FROM login
WHERE LOGIN_EMAIL = @LoginEmail;
它工作正常。
我的表排序规则设置为“ utf8-默认排序规则”。
列(LOGIN_USER_ID)排序规则设置为“表默认值”。
我在mySQL Workbench中如下调用存储过程:
CALL IsUserExists('abcdefg@gmail.com');
oCommand.ExecuteReader()
对象中始终没有记录。
感谢您的帮助。
答案 0 :(得分:1)
我发现了问题。 IT与“ @”登录存储过程有关。 正确使用方式:
CREATE DEFINER=`pubuducg`@`%` PROCEDURE `IsUserExists`(IN LoginEmail varchar(100))
BEGIN
SELECT LOGIN_USER_ID AS USERS FROM login WHERE LOGIN_EMAIL = LoginEmail;
END
无需在SQL查询中添加“ @”符号。