存储过程不返回记录

时间:2018-11-17 19:42:31

标签: mysql asp.net stored-procedures

我正在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()对象中始终没有记录。

感谢您的帮助。

1 个答案:

答案 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查询中添加“ @”符号。