MySQL存储过程响应错误

时间:2015-05-10 06:20:50

标签: mysql

我创建一个可测试的表。它有三个字段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');

结果是..

enter image description here

但我需要这样......

enter image description here

我不知道出了什么问题......请告诉我..

2 个答案:

答案 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"