解决 mysql 存储过程查询数据方式是变量拼接表名的写法

需求:

用存储过程查询动态表名的数据

遇到问题:

查询语句 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);


结果显示:




  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值