Mysql存储过程的不同结果

时间:2014-10-21 12:44:22

标签: mysql sql stored-procedures

我有一个名为getvotes(postitem varchar(50),userid varchar(50))的存储过程,它获取用户为某个项目提供的投票数。此过程中的DML语句是

select count(*) from tblvotes where `postitem`=postitem and `userid`=userid;

它给了我30的结果。但是当我使用

运行sql(在存储过程之外使用相同的参数值)时

select count(*) from tblvotes where `postitem`=md5(1) and `userid`=md5(1);

结果是10。

我的查询有什么问题?

谢谢!

2 个答案:

答案 0 :(得分:0)

请勿使用与列名称或其他名称相同的参数名称。

我通常在每个参数前加p_前缀,每个变量加v_前缀,以避免此类错误。

答案 1 :(得分:0)

如果哈希比较可能失败,请检查用于MD5和用户HEX的加密长度

select count(*) from tblvotes where {postitem {1}}的userid = HEX(MD5(1) and