我创建一个可测试的表。它有三个字段ID,名称和城市。
create table testtable
(
id int,
name varchar(100),
city varchar(100)
)
表记录是
insert into testtable values(1,'Sanjay','Rajkot');
insert into testtable values(2,'Ravi','Ahmedabad');
我还创建了一个名为sp_testtable的过程。
DELIMITER //
create procedure sp_testtable
(
in city varchar(100)
)
BEGIN
select * from testtable where city = city;
END //
DELIMITER ;
当我调用存储过程时
CALL sp_testtable('Rajkot');
结果是..
但我需要这样......
我不知道出了什么问题......请告诉我..
答案 0 :(得分:1)
尝试将变量名称更改为另一个名称。 例如:
DELIMITER //
create procedure sp_testtable
(
in city_name varchar(100)
)
BEGIN
select * from testtable where city = city_name;
END //
DELIMITER ;
Sql期望您正在比较同一列,该列始终为true。
答案 1 :(得分:0)
您始终需要区分参数和列。
DELIMITER //
create procedure sp_testtable
(
in city_name varchar(100)
)
BEGIN
select * from testtable where city = city_name;
END //
DELIMITER ;
替代方法:
在列名中添加表名:"其中testtable.city = city"