mysql 当我用参数调用showuser时,它不会显示结果[已关闭]

yhuiod9q  于 2023-02-28  发布在  Mysql
关注(0)|答案(1)|浏览(117)

编辑问题以包含desired behavior, a specific problem or error, and the shortest code necessary to reproduce the problem。这将有助于其他人回答问题。
1分钟前关闭。
Improve this question
当我用给定的参数调用存储过程时,它将导致空表
这是用于创建和调用存储过程的mysql代码

DELIMITER $$

CREATE PROCEDURE showuser(in Id int, in thename varchar(20))
begin
select * from users where id < Id and name = thename;
end$$

DELIMITER ;

但会导致空表。
Output

d7v8vwbk

d7v8vwbk1#

参数名不区分大小写,因此Id参数的名称与id列的名称相同,where id < Id条件的计算结果为where id < id,它永远不会为真,查询将不返回任何内容!
解决这个问题的最简单方法是更改参数名,即uid
另一个选项是将列名限定为以下形式:

CREATE PROCEDURE showuser(in Id int, in thename varchar(20))
begin
select * from users U where U.id <Id and U.name = thename;
end

demo

相关问题