Как прочитать значение поля в переменную в хранимой процедуре в MySQL? - PullRequest
0 голосов
/ 12 декабря 2018

Моей следующей процедуре необходимо обновить попытки входа в систему, если вход не выполнен из-за неправильного пароля или статуса, если адрес электронной почты правильный.Эта процедура вызывается, только если в таблице есть только адрес электронной почты с солью.

SELECT 
    login.LOGIN_USER_ID,
    login.LOGIN_EMAIL,
    login.LOGIN_ACCOUNT_STATUS,
    login.LOGIN_LOGIN_ATTEMPTS,
    login.LOGIN_SALT,
    GROUP_CONCAT(user_role.USER_ROLE_ROLE SEPARATOR ',') AS ROLES,
    user_role.USER_ROLE_STATUS 
FROM 
    login 
INNER JOIN 
    user_role ON user_role.USER_ROLE_USER_ID = login.LOGIN_USER_ID 
              AND user_role.USER_ROLE_STATUS = @AccStatus 
WHERE 
    login.LOGIN_EMAIL = @UserEmail 
    AND login.LOGIN_ACCOUNT_STATUS = @AccStatus 
    AND login.LOGIN_PASSWORD = @PassWD;

В случае сбоя входа в систему (электронная почта существует, но пароль неправильный)

UPDATE login 
SET LOGIN_ACCOUNT_STATUS = (SELECT CASE (LOGIN_LOGIN_ATTEMPTS>@LoginAttempts) WHEN 1 THEN 'LOCKED' ELSE 'ACTIVE' END),
    LOGIN_LOGIN_ATTEMPTS = (SELECT CASE (login.LOGIN_USER_ID>1) WHEN 1 THEN LOGIN_LOGIN_ATTEMPTS + 1 ELSE 0 END),
    LOGIN_LAST_LOGIN_DATE = @TransactionDateTime,
    LOGIN_LAST_LOGIN_LOCATION = null 
WHERE LOGIN_EMAIL = @UserEmail;

Однако это не удается, поскольку я не сохраняю попытки и идентификатор пользователя в переменной.Я не знаю, как я мог, кроме чтения одного поля за раз с SET.Поскольку таблица уже прочитана выше, как я могу извлечь значения полей?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...