mysql表名作为存储过程变量mysql默认不⽀持表名作为变量名,如下所⽰
delimiter $$
DROP procedure IF EXISTS getDataByDbName $$
CREATE procedure getDataByDbName(in dbName VARCHAR(20))
BEGIN
select * from dbName;
mysql存储过程使用end$$
delimiter;
当运⾏会报错
[SQL]
call getDataByDbName("xxx");
[Err] 1146 - Table 'xxx.dbname' doesn't exist
这⾥需要⽤到mysql的⼀个字符串拼接函数CONCAT(),使⽤⽤户变量得到结果,然后输出即可delimiter $$
DROP procedure IF EXISTS getDataByDbName $$
CREATE procedure getDataByDbName(in dbName VARCHAR(20))
BEGIN
SET @STMT =CONCAT("SELECT * from ",dbName,";");
PREPARE STMT FROM @STMT;
EXECUTE STMT;
end$$
delimiter;

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。