Проблема с возвратом значений с помощью моей процедуры

Следующая процедура не возвращает значения. Что случилось?

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;
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
В предыдущем посте мы создали функциональность вставки и чтения для нашей динамической СУБД. В этом посте мы собираемся реализовать функции обновления...
Документирование API с помощью Swagger на Springboot
Документирование API с помощью Swagger на Springboot
В предыдущей статье мы уже узнали, как создать Rest API с помощью Springboot и MySql .
Роли и разрешения пользователей без пакета Laravel 9
Роли и разрешения пользователей без пакета Laravel 9
Этот пост изначально был опубликован на techsolutionstuff.com .
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
1
0
27
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы должны использовать := вместо = для присвоения значений 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;

демо на 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

Другие вопросы по теме