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

解决 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);

结果显示:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: