调用带参存储过程showuser无结果/返回空表问题求助
存储过程调用返回空表的排查与解决
问题根源
你的存储过程参数名Id与users表的id字段同名,在where id < Id条件中,MySQL会将两边的标识符都解析为表字段id,等价于执行id < id——这个条件永远不成立,因此必然返回空表。
修正方案
修改参数名,避免与表字段名冲突,比如将参数命名为p_id和p_name,修正后的存储过程代码如下:
DELIMITER $$ CREATE PROCEDURE showuser(in p_id int, in p_name varchar(20)) begin select * from users where id < p_id and name = p_name; end$$ DELIMITER ;
额外验证建议
调用存储过程时,确保传入的p_id值大于表中存在的id数值,同时p_name在users表中有匹配的记录,这样才能得到预期的查询结果。
内容的提问来源于stack exchange,提问作者Khushi Prajapati
相关产品推荐
相关产品推荐

