我的程序返回值时出现问题

Problem in returning values with my procedure

以下过程没有返回值。怎么了?

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;

您必须使用 := 而不是 = 来为 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;

demo on dbfiddle.uk

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 than SET.

source: https://dev.mysql.com/doc/refman/8.0/en/user-variables.html