我的程序返回值时出现问题
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;
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
以下过程没有返回值。怎么了?
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;
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