您的位置:首页 > 数据库 > MySQL

mysql存储过程变量名与字段名重复导致查不到数据

2018-02-08 10:30 721 查看
有个表 t1:

idmsgval
2abc24.5
3def8.724
创建一个存储过程test_v:
DELIMITER $$

DROP PROCEDURE IF EXISTS `test_v`$$

CREATE DEFINER=`root`@`localhost` PROCEDURE `test_v`(vid INT )
BEGIN
DECLARE id INT;
DECLARE msg VARCHAR(255);
DECLARE val FLOAT;
#查询数据
SELECT id ,msg, val INTO id, msg, val FROM t1 WHERE id = vid;

#显示数据
SELECT id, msg, val;

END$$

DELIMITER ;

运行:
CALL test_v(2)结果是:
idmsgval
(NULL)(NULL)(NULL)
因为变量名与字段名重复了,所以查询结果就有问题,
改成不重名:
DELIMITER $$

DROP PROCEDURE IF EXISTS `test_v`$$

CREATE DEFINER=`root`@`localhost` PROCEDURE `test_v`(vid INT )
BEGIN
DECLARE aid INT;
DECLARE amsg VARCHAR(255);
DECLARE aval FLOAT;
#查询数据
SELECT id ,msg, val INTO aid, amsg, aval FROM t1 WHERE id = vid;

#显示数据
SELECT aid, amsg, aval;

END$$

DELIMITER ;
再运行:CALL test_v(2)
结果是:
idmsgval
2aa2.4
正确了
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: