mysql存储过程变量名与字段名重复导致查不到数据
2018-02-08 10:30
721 查看
有个表 t1:
创建一个存储过程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)结果是:
因为变量名与字段名重复了,所以查询结果就有问题,
改成不重名:
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)
结果是:
正确了
id | msg | val |
2 | abc | 24.5 |
3 | def | 8.724 |
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)结果是:
id | msg | val |
(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)
结果是:
id | msg | val |
2 | aa | 2.4 |
相关文章推荐
- mysql 存储过程判断重复的不插入数据
- 补MySQL第六天----Java中实现预处理、批处理、大数据字段与存储过程
- 【Mysql之自我练习<一>】利用存储过程,造大量测试数据(注:私用的,为了不遗失)
- Mysql利用存储过程插入400W条数据
- mysql将查询结果写入变量,存储过程
- 存储过程变量类型定义与表字段一致
- 存储过程执行删除重复数据、动态执行sql、拼接sql
- MySQL存储过程跨数据库操作同步数据
- 存储过程写入大批量数据,用于测试mysql查询优化
- Mysql存储过程数据汇总(二)
- mysql中查询表的字段名称的存储过程css('前缀','表名',1)
- 一个MySQL清除数据库所有表数据保留表结构的存储过程
- mysql存储过程之游标遍历数据表
- Mysql查询某字段值重复的数据
- mysql 利用mysqldump 导入导出表结构、数据、存储过程及函数
- mysql存储过程中使用select count(*) into 变量名 from +表+ where条件的用法
- 存储过程内部查询条件约束失效的问题(查询变量与表内字段相同引起)
- mysql基础---存储过程及变量定义(十)
- mysql高级语法:变量声明, 游标, 函数, 存储过程, 循环体, 触发器
- mysql 百万数据存储过程 查询优化技巧