【问题标题】:Stored procedure does not return records存储过程不返回记录
【发布时间】:2019-04-20 15:32:22
【问题描述】:

我在 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() 对象中始终不存在任何记录。

感谢任何帮助。

【问题讨论】:

    标签: mysql asp.net stored-procedures


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

    【讨论】:

      猜你喜欢
      • 2017-05-06
      • 1970-01-01
      • 2014-09-16
      • 2015-10-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-01-04
      相关资源
      最近更新 更多