存储过程返回不正确的值

dpiehjr4  于 2021-06-19  发布在  Mysql
关注(0)|答案(1)|浏览(352)

我的查询返回正确的值,但当我作为存储过程运行查询时,它返回不正确的结果。这是我返回正确值的查询

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);

请看截图
查询截图

这是存储过程的错误结果

你可以看到,mysql说所有的图片都属于profileid5,我把它传了进来。我的存储过程怎么了

p1tboqfb

p1tboqfb1#

您的问题是,输入参数与表中的字段具有相同的名称,并且在查询中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

相关问题