Хранимая процедура возвращает неверные значения - PullRequest
0 голосов
/ 17 ноября 2018

Мой запрос возвращает правильные значения, но когда я запускаю запрос как процедуру сохранения, он возвращает неверные результаты.это мой запрос, который возвращает правильные значения

select imageId,imageVerified,isCoverImage,isDeleted,isProfileImage,path,profileId
 from images  where profileId = 5;

, и когда я запускаю эту хранимую процедуру, он возвращает все строки и показывает profieId как переданный в profileId, это моя хранимая процедура

CREATE DEFINER=`root`@`localhost` PROCEDURE `getImagesForUser`(in profileId long)
BEGIN
    select imageId,imageVerified,isCoverImage,isDeleted,isProfileImage,path,profileId
    from images  where profileId = profileId;
END

вот как я называю процедуру

CALL `tfm`.`getImagesForUser`(5);

Пожалуйста, смотрите скриншоты

скриншот для запроса screenshot for query

этоневерный результат хранимой процедуры

incorrect result from stored procedure

Вы можете видеть, mysql говорит, что все изображения принадлежат profileId 5, который я передал. Что не так с моимхранимая процедура

1 Ответ

0 голосов
/ 18 ноября 2018

Ваша проблема в том, что ваш входной параметр имеет то же имя, что и поле в вашей таблице, и внутри вашего запроса MySQL интерпретирует profileId как имя поля вместо этого.Таким образом, ваш where profileId = profileId всегда верен, и вы получаете все строки.Измените имя входного параметра, например

CREATE DEFINER=`root`@`localhost` PROCEDURE `getImagesForUser`(in searchProfileId long)
BEGIN
    select imageId,imageVerified,isCoverImage,isDeleted,isProfileImage,path,profileId
    from images  where profileId = searchProfileId;
END
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...