解决 mysql 存储过程查询数据方式是变量拼接表名的写法
2017-05-12 14:50
309 查看
需求:
用存储过程查询动态表名的数据
遇到问题:
查询语句 from后面不能直接用参数查询 MYSQL不支持直接使用变量做表名,会把参数名当做表名查询,报错
解决方法:
把查询语句和变量通过concat连接付给变量。通过执行变量来执行此语句
sql代码:
delimiter $$
drop procedure if exists productpricing $$ #如果此存储过程存在就删除
create procedure productpricing(IN activityCode varchar(20),IN `userId` int,IN `activityId` int)
begin
SET @STMT :=CONCAT("select p.id as longitude , p.visit_id as latitude from people_",activityCode," as p where p.id = 88 and p.visit_type = 3");
PREPARE STMT FROM @STMT;
EXECUTE STMT;
end;
$$
delimiter ;
执行存储过程:
CALL productpricing('visit',2,2);
结果显示:
用存储过程查询动态表名的数据
遇到问题:
查询语句 from后面不能直接用参数查询 MYSQL不支持直接使用变量做表名,会把参数名当做表名查询,报错
解决方法:
把查询语句和变量通过concat连接付给变量。通过执行变量来执行此语句
sql代码:
delimiter $$
drop procedure if exists productpricing $$ #如果此存储过程存在就删除
create procedure productpricing(IN activityCode varchar(20),IN `userId` int,IN `activityId` int)
begin
SET @STMT :=CONCAT("select p.id as longitude , p.visit_id as latitude from people_",activityCode," as p where p.id = 88 and p.visit_type = 3");
PREPARE STMT FROM @STMT;
EXECUTE STMT;
end;
$$
delimiter ;
执行存储过程:
CALL productpricing('visit',2,2);
结果显示:
相关文章推荐
- MySQL查询中使用Concat关键字来拼接中文字符乱码(不同的数据类型拼接)解决方式
- mysql 大数据查询的解决方式
- 解决MySQL查询数据不一致
- awt可视化界面上传数据到mysql,jsp通过jdbc方式查询数据库,并将结果打印在网页上
- mysql 将竖列的表格数据拼接成横向的数据,查询结果
- jdbc mysql 中文查询不到数据解决
- 解决MySQL查询数据不一致诟病
- struts+hibernate+mysql HQL语句查询带中文的查询不出数据的解决方法
- MyBatis 【问题】解决java连接mysql查询含中文无数据的问题
- 解决存储过程中数据安全问题的四种方式
- 临时表 存储过程解决复杂数据的查询
- 【MySQL】查询前7天的数据统计(解决日期不连续问题)
- Mysql根据id查询上下条数据(解决上一篇下一篇问题)
- 【拼接属性查询方式】MySql某一列属性值为拼接时的查询方式
- 通过Java向Mysql写中文数据出现乱码解决方式
- [转载]MySQL到NoSQL:数据的重思和查询方式的转换
- MySQL到NoSQL:数据的重思和查询方式的转换
- Mysql通过中文查询数据查不出结果问题解决方案
- mysql查询某个逗号拼接字段的数据个数
- Mysql(三)-数据导入,导出、管理表记录、条件匹配、表查询方式