我的查询返回正确的值,但是当我将查询作为存储过程运行时,它返回错误的结果。这是我的查询,返回正确的值
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说所有图像都属于我传入的profileId 5。 我的存储过程有什么问题
答案 0 :(得分:1)
您的问题是您的输入参数与表中的字段具有相同的名称,并且在查询内部MySQL会将profileId
解释为字段名称。因此,您的where profileId = profileId
始终为true,并且得到所有行。更改输入参数的名称,例如
CREATE DEFINER=`root`@`localhost` PROCEDURE `getImagesForUser`(in searchProfileId long)
BEGIN
select imageId,imageVerified,isCoverImage,isDeleted,isProfileImage,path,profileId
from images where profileId = searchProfileId;
END