以下过程不返回值。怎么了?
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 ('rcaldas.ti@gmail.com','1234', @id, @nome, @nascimento);--its correct
select @id, @nome, @nascimento;
答案 0 :(得分:0)
您必须使用:=
而不是=
在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;
以前的MySQL版本使得可以在
SET
以外的语句中为用户变量分配值。 MySQL 8.0支持此功能以实现向后兼容,但是在将来的MySQL版本中可能会删除该功能。以这种方式进行分配时,必须使用
:=
作为分配操作符;=
在SET
以外的语句中被视为比较运算符。来源: https://dev.mysql.com/doc/refman/8.0/en/user-variables.html