Следующая процедура не возвращает значения. Что случилось?
CREATE PROCEDURE `sp_ValidarLogin`
(pEmail VARCHAR(45),
pSenha VARCHAR(255),
OUT rId INT,
OUT rNome VARCHAR(45),
OUT rDataNascimento DATE)
SELECT @rId = ID,
@rNome = NOME,
@rDataNascimento = DATA_NASCIMENTO
FROM usuario
WHERE EMAIL = pEmail AND SENHA = pSenha;
CALL sp_ValidarLogin ('[email protected]','1234', @id, @nome, @nascimento);--its correct
select @id, @nome, @nascimento;
Вы должны использовать :=
вместо =
для присвоения значений SELECT
:
CREATE PROCEDURE `sp_ValidarLogin` (
pEmail VARCHAR(45),
pSenha VARCHAR(255),
OUT rId INT,
OUT rNome VARCHAR(45),
OUT rDataNascimento DATE)
SELECT @rId := ID, @rNome := NOME, @rDataNascimento := DATA_NASCIMENTO
FROM usuario
WHERE EMAIL = pEmail AND SENHA = pSenha;
Previous releases of MySQL made it possible to assign a value to a user variable in statements other than
SET
. This functionality is supported in MySQL 8.0 for backward compatibility but is subject to removal in a future release of MySQL.When making an assignment in this way, you must use
:=
as the assignment operator;=
is treated as the comparison operator in statements other thanSET
.source:https://dev.mysql.com/doc/refman/8.0/en/user-variables.html